Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2016, 01:23   #31
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

то мне надо просто в папку положить данную утилиту и на найден в подпапках все солушены и сделает дела.....Visual Studio 2013 Express for Desktop
komra2 вне форума Ответить с цитированием
Старый 12.02.2016, 01:24   #32
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на втором варианте кода, какой экспепшн выдаст?

хочу понять что у вас отличается, ибо поидее должен найти все равно MSBuild хоть какой-то
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2016, 01:25   #33
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

не понимаю я куда прописать "C:/Users/Wiz/Desktop/test/"
komra2 вне форума Ответить с цитированием
Старый 12.02.2016, 01:27   #34
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

просто положите ее в эту папку.
она должна запустится и на пустой папке без ошибок, создав пустой лог файл.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2016, 01:32   #35
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

вот это выскочило Безымянный.jpg
komra2 вне форума Ответить с цитированием
Старый 12.02.2016, 01:38   #36
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
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() ?? MSBuild; 
            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()
        {
            try
            {
                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");
                    }
                }
            }
            catch
            {
                return null;
            }
        }

        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;
            }
        }
    }
}
хм. нет раздела MSBuild в реестре, странная студия.
тогда так. должна выйти в путь по умолчанию.

в принципе можно усложнить чтоб и этот путь сама найти смогла тоже(а не в коде)

принцип проверки тот же.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2016, 01:47   #37
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

софт запустился на долю секунды и закрылся
P.S. Норма, только как мне сделать чтобы он искал .sln во всех файлах и подпапках
пример директории таков:
..../Desktop/test/test1/.sln и папка
..../Desktop/test/test2/.sln и папка
..../Desktop/test/test3/.sln и папка
чтобы софт положить в паку test и пусть работает в папке test и там находит все .sln
только зачем создавать .log и название sln файла.log ?

Последний раз редактировалось komra2; 12.02.2016 в 01:56.
komra2 вне форума Ответить с цитированием
Старый 12.02.2016, 02:00   #38
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да, строку
Код:
foreach (var file in Directory.GetFiles(root, "*.sln"))
заменить на
Код:
foreach (var file in Directory.GetFiles(root, "*.sln", SearchOption.AllDirectories))
забыл что-то про флаг. так сразу должно было быть.
Цитата:
софт запустился на долю секунды и закрылся
стандартная консольная утилита.
вся информация будет в лог файлах в целевой папке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2016, 02:03   #39
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
да, строку
Код:
foreach (var file in Directory.GetFiles(root, "*.sln"))
заменить на
Код:
foreach (var file in Directory.GetFiles(root, "*.sln", SearchOption.AllDirectories))
забыл что-то про флаг. так сразу должно было быть.
стандартная консольная утилита.
вся информация будет в лог файлах в целевой папке.
а можно чтоб этой информации не было ?
хотя она мне не мешает .....
komra2 вне форума Ответить с цитированием
Старый 12.02.2016, 02:08   #40
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в общем лог файле видно успешно или нет.
в подробном уже видно причины.

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофайловые проекты _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