Как программно построить визуальное студийное решение? - PullRequest
7 голосов
/ 11 ноября 2009

Я хотел бы скомпилировать решение, передав путь к файлу решения (файл .sln) и режим сборки (отладка, выпуск). Я не хочу вызывать процесс командной строки, такой как devenv.exe или msbuild.exe, вместо этого я хотел бы использовать API и знать, были ли ошибки компиляции.

Возможно ли это? Пожалуйста, предоставьте образцы, если вы думаете, что знаете, как это сделать.

Ответы [ 4 ]

3 голосов
/ 11 ноября 2009

Вам понадобится запустить процесс в какой-то момент, чтобы выполнить компиляцию, вы можете также запустить процесс, чтобы запустить компиляцию.Это будет намного проще, чем бороться с API.

Редактировать Эндрю дает несколько хороших советов о том, как вы можете это сделать, но я все еще думаю, что это ошибка.

2 голосов
/ 11 ноября 2009

Как указал itowlson, вы также можете использовать API сборки Build Engine

... из MSDN ...

// Build a project file
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj");

Вы можете использовать MSBuild из сценария, такого как командный файл. И просто проверьте ErrorLevel на что-то отличное от 0 ... или вы можете повеселиться с API.

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ MSBuild.exe

.. из msbuild.exe /? ...

Версия Microsoft (R) Build Engine 2.0.50727.4927 [Microsoft .NET Framework, версия 2.0.50727.4927] Авторское право (C) Microsoft Corporation 2005. Все права защищены.

Синтаксис: MSBuild.exe [параметры] [файл проекта]

...

Примеры:

    MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
    MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
1 голос
/ 11 ноября 2009

здесь статья , обсуждающая использование компилятора C # программно. Вот статья , в которой обсуждается формат файла sln. Файл sln является XML-файлом, поэтому его довольно легко прочитать.

0 голосов
/ 18 августа 2010

Я бы также предложил использовать API MSBuild. Кажется, работает довольно хорошо. Тем не менее, он значительно изменился по сравнению с .NET4 и VS2010.

...