Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.02.2016, 22:14   #21
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,681
Репутация: 2631
По умолчанию

ТС, может озвучить зачем вам это? Просто на вскидку могу только несколько кейсов сего действия придумать, но для них есть болле удобные и правильные решения... а просто так перекомпилировать кучу солюшенов редко приходится.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 11.02.2016, 22:43   #22
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Адрес: Не важно
Сообщений: 733
Репутация: -78
По умолчанию

Я никогда не рассказываю на вопрос "зачем" , у меня нет такого вопроса, есть вопрос -как ? Да есть такой. Где скачать или откуда получить файл devenv.exe потому-что у меня его нет?
komra2 вне форума   Ответить с цитированием
Старый 11.02.2016, 22:55   #23
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,994
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
Где скачать или откуда получить файл devenv.exe потому-что у меня его нет?
если у вас его нет, значит у вас нет студии...ибо это ее IDE.

просто вас об xyz(тыркни меня!) предупреждают.
потому что понимание желания поможет опытным людям подсказать оптимальное решение.

так же прочтите мою подпись.
Цитата:
Я никогда не рассказываю на вопрос "зачем" , у меня нет такого вопроса
Цитата:
Сообщение от Алиса в стране чудес
— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно... — сказала Алиса.
— Тогда все равно куда и идти, — заметил Кот.
— Только бы попасть куда-нибудь, — пояснила Алиса.
— Куда-нибудь ты обязательно попадешь, — сказал Кот. — Нужно только достаточно долго идти.
Поверьте мне, если вы начнете с зачем, вам ответ дадут на первой же странице, даже практически готовый.
Проведу аналогию, если вы попросите дом, вам дадут дом, такой какой попросили.
Но если вы просите кучу кирпичей, вам их и дадут, но собирать вам придется самим.

судя по всему задача сделать масс ребилд, я бы это в PowerShell наверно сделал, там рекурсивный поиск легко сделать( по крайней мере я знаю как).
в общем читаем посты 2 и 14 до понимания.
IDE вам не даст автоматизации, это не ее задача.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.02.2016 в 23:07.
Пепел Феникса вне форума   Ответить с цитированием
Старый 11.02.2016, 23:25   #24
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Адрес: Не важно
Сообщений: 733
Репутация: -78
По умолчанию

Раз уж на то пошло, ответ на любой мой вопрос а именно зачем? Как быстро железка справляется с задачей;2) не делать для себя лишнюю работу, зачем мне это делать если у меня это займет день а железка сделать за 5-15 секунд
komra2 вне форума   Ответить с цитированием
Старый 12.02.2016, 00:04   #25
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,998
Репутация: 3738

icq: 512-765
skype: alexp.frl
По умолчанию

Это не ответ, и так понятно, что ЭВМ обычно используются для упрощения работы человека.
Только задачи разные бывают и решаются по-разному.

А xyz прочитать все-таки стоит.
Alex11223 вне форума   Ответить с цитированием
Старый 12.02.2016, 00:42   #26
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Адрес: Не важно
Сообщений: 733
Репутация: -78
По умолчанию

Интересно было почитать...да...то есть чтобы задать вопрос надо алгоритм выложить как куда )зачем может не надо, железке та все равно зачем(алгоритм написали, она и выполняет))?
komra2 вне форума   Ответить с цитированием
Старый 12.02.2016, 01:15   #27
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,994
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

потому что представьте стоматолога лечащего зубы через задницу.

Код:
using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string root = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            if (args.Length > 0 && Directory.Exists(args[0]))
            {
                root = args[0];
            }
            using (var log = new StreamWriter(Path.Combine(root, "log.log"), false))
            {
                foreach (var file in Directory.GetFiles(root, "*.sln"))
                {
                    log.WriteLine("Starting build: {0}", file.Substring(root.Length));
                    log.WriteLine("Build finished with result: {0} (0 = success)", Build(file, root));
                }
            }
        }

        static string MSBuild = GetMSBuildPath();

        private static string GetMSBuildPath()
        {
            using (var reg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions", false))
            {
                var max=reg.GetSubKeyNames().Select(k => new Tuple<string,decimal>(k,decimal.Parse(k, CultureInfo.InvariantCulture))).OrderByDescending(k => k.Item2).First().Item1;
                using (var sub = reg.OpenSubKey(max))
                {
                    return Path.Combine(sub.GetValue("MSBuildToolsPath").ToString(),"msbuild.exe");
                }
            }
        }

        static int Build(string path, string root)
        {
            var psi = new ProcessStartInfo(MSBuild, string.Format("\"{0}\"", path));
            psi.RedirectStandardOutput = true;
            psi.WorkingDirectory = Path.GetDirectoryName(path);
            psi.UseShellExecute = false;
            using (var proc = Process.Start((psi)))
            using (var sr = new StreamWriter(Path.Combine(root, Path.GetFileName(path) + ".log"), false))
            {
                sr.WriteLine(proc.StandardOutput.ReadToEnd());
                proc.WaitForExit();
                return proc.ExitCode;
            }
        }
    }
}
вообще вот, накатал со скуки
сбилдить, и перенести в вашу папку с солюшенами, далее рядом с собой и в подпапках найдет все солюшены и построит их.
путь можно передать в командной строке первым аргументом.

Цитата:
зачем может не надо, железке та все равно зачем(алгоритм написали, она и выполняет))?
потому что
Цитата:
Программа делает то что написал программист, а не то что он хотел.
PS: всем, кроме ТС: кстати, нельзя дотнетовскому MSBuild передавать проекты от 2015 студии(вроде как от 2013 тоже), так как там MSBuild старее чем со студией, и он не может построить.
PPS: ТС, знаете, я это написал минут за 20-30. Потому что я вижу цель, и понимаю шаги к ней.
я делаю поэтапно собственно по коду это видно.
PPPS: насчет вопросов как и зачем, я не просто так Алису процитировал. знание цели позволит получить ответ на вопрос как, причем эффективный ответ.


----------------------------------------------

Ах да, билдит только конфигурацию по умолчанию.(обычно Debug)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.02.2016 в 01:43.
Пепел Феникса вне форума   Ответить с цитированием
Старый 12.02.2016, 02:11   #28
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Адрес: Не важно
Сообщений: 733
Репутация: -78
По умолчанию

то есть код перекомпилирует или делает Rebuild всем .sln(замечательно) вот ток ошибку выдает
An unhandled exception of type 'System.TypeInitializationException ' occurred in mscorlib.dll

Additional information: Инициализатор типа "ConsoleApplication3.Program" выдал исключение.
komra2 вне форума   Ответить с цитированием
Старый 12.02.2016, 02:12   #29
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Адрес: Не важно
Сообщений: 733
Репутация: -78
По умолчанию

только не пойму куда мне написать путь в папке в которой находятся солушаны
komra2 вне форума   Ответить с цитированием
Старый 12.02.2016, 02:20   #30
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,994
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

Код:
using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            MSBuild=GetMSBuildPath(); \\ для MSVCS до 2013 убрать.
            string root = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            if (args.Length > 0 && Directory.Exists(args[0]))
            {
                root = args[0];
            }
            using (var log = new StreamWriter(Path.Combine(root, "log.log"), false))
            {
                foreach (var file in Directory.GetFiles(root, "*.sln"))
                {
                    log.WriteLine("Starting build: {0}", file.Substring(root.Length));
                    log.WriteLine("Build finished with result: {0} (0 = success)", Build(file, root));
                }
            }
        }

        static string MSBuild = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe";

        private static string GetMSBuildPath()
        {
            using (var reg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions", false))
            {
                var max=reg.GetSubKeyNames().Select(k => new Tuple<string,decimal>(k,decimal.Parse(k, CultureInfo.InvariantCulture))).OrderByDescending(k => k.Item2).First().Item1;
                using (var sub = reg.OpenSubKey(max))
                {
                    return Path.Combine(sub.GetValue("MSBuildToolsPath").ToString(),"msbuild.exe");
                }
            }
        }

        static int Build(string path, string root)
        {
            var psi = new ProcessStartInfo(MSBuild, string.Format("\"{0}\"", path));
            psi.RedirectStandardOutput = true;
            psi.WorkingDirectory = Path.GetDirectoryName(path);
            psi.UseShellExecute = false;
            using (var proc = Process.Start((psi)))
            using (var sr = new StreamWriter(Path.Combine(root, Path.GetFileName(path) + ".log"), false))
            {
                sr.WriteLine(proc.StandardOutput.ReadToEnd());
                proc.WaitForExit();
                return proc.ExitCode;
            }
        }
    }
}
хоть видно причину будет.
у вас какая студия?
если до 2013, то удалите выделенную строку.
Цитата:
только не пойму куда мне написать путь в папке в которой находятся солушаны
это утилита, или положить ее в папку, или аргументом передать( не забывая про кавычки)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофайловые проекты _PROGRAMM_ Visual C++ 9 09.12.2012 13:57
Многофайловые проекты. inc Общие вопросы C/C++ 1 25.04.2012 16:57
Перекомпилировать файл labview в c++ ivanfadeeaa Помощь студентам 0 03.12.2011 22:15
разработать проекты.... Virus Помощь студентам 2 20.06.2007 17:53


07:01.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.