Как автоматизировать построение решения с помощью MsBuild API 4.0? - PullRequest
5 голосов
/ 14 марта 2012

У меня есть куча решений, загруженных из Интернета (кодплекс и т. Д.), И я хочу собрать их и запустить инструмент над библиотеками DLL. Я хочу сделать это с помощью автоматизации.

Было предложено использовать MSBuild API , поскольку это позволит легко получать информацию об ошибках и манипулировать MsBuild в дальнейшем, чтобы получить другую информацию. К сожалению это вряд ли документировано так:

  1. Как мне создать файл .sln (через MSBuild API 4.0)?
  2. Как мне получить информацию об ошибке? (Я видел пример того, как вывести журнал на консоль, но не нашел что-то для файлов)

Спасибо!

Ответы [ 3 ]

4 голосов
/ 14 марта 2012

Я нашел связанный вопрос по stackoverflow, который обеспечивает решение:

программный запуск msbuild

Принятый ответ обеспечивает хорошие ресурсы:

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/ec95c513-f972-45ad-b108-5fcfd27f39bc/ Ведение журнала Сборка сообщений с помощью MSBuild 4.0: http://www.go4answers.com/Example/building-solution-programatically-vs-5395.aspx

Также приведен пример использования журнала для msdn: http://msdn.microsoft.com/en-us/library/microsoft.build.framework.ilogger.aspx

3 голосов
/ 14 марта 2012

Может быть, я что-то упускаю, но почему для такой простой задачи это должен быть MSBuild API ?

Просто из того, что вы написали в вопросе,Я не вижу необходимости использовать API только для построения решения и записи результатов в текстовый файл.
Для этого вы можете использовать инструмент командной строки MSBuild.

Построить решение с помощью MSBuild так же просто:

%windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln

Чтобы записать вывод в текстовый файл , вам просто нужно добавить это:
(пример скопирован по ссылке)

/l:FileLogger,Microsoft.Build;logfile=MyLog.log

Таким образом, окончательное утверждение выглядит следующим образом:

%windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln /l:FileLogger,Microsoft.Build;logfile=MyLog.log

Это создаст решение и сохранит выводMSBuild в текстовом файле с именем MyLog.log в текущем каталоге.

1 голос
/ 14 марта 2012

Ничто из того, что вы описали, не требует использования MSBuild API.Использование MS Build API имеет смысл, если вы хотите расширить процесс сборки для пользовательских задач сборки, но это бесполезно, если вы просто хотите автоматизировать свои сборки.API очень хорошо документирован.Вот как в документации MSDN. MSBuild API

Чтобы ответить на ваши вопросы напрямую: 1) MSBuild не понимает файлы решения.Это визуальная концепция студии.MSBuild будет «запускать» файл решения, если он собран из командной строки, но он делает это, генерируя файл msbuild из файла решения.Вы получите тот же эффект, запустив файлы проекта верхнего уровня.

2) Как уже упоминалось, мой Кристиан, вы можете сделать это с помощью логгера.Вот документация: Build Logger

Если вы хотите автоматизировать свои сборки, используйте установленную среду автоматизации сборки, такую ​​как Jenkins или TeamCity.

...