Build.net в Jenkins с использованием MSBuild
У меня есть приложение .net, построенное на .net framework 3.5, я пытаюсь создать это приложение на сервере Jenkins CI. Я добавил плагин MSBuild и добавил путь к файлу .exe 2.0, 3.5 и 4.0 версий MSBuild. Но мои процессы здания не работают, показывая следующее сообщение об ошибке.
Path To MSBuild.exe: msbuild.exe
Executing command: cmd.exe /C msbuild.exe Neo.sln && exit %%ERRORLEVEL%%
[Test project] $ cmd.exe /C msbuild.exe Neo.sln && exit %%ERRORLEVEL%%
'msbuild.exe' is not recognized as an internal or external command,
operable program or batch file.
Build step 'Build a Visual Studio project or solution using MSBuild.' marked uild as failure
Finished: FAILURE
Может ли кто-нибудь мне помочь?..
Ответы
Ответ 1
Чтобы заставить плагин MSBuild работать, вам нужно настроить плагин на экране управления Jenkins.
ПРИМЕЧАНИЕ. В новых версиях Jenkins вы найдете конфигурацию MSBuild в глобальной настройке инструмента:
![введите описание изображения здесь]()
![Jenkins MSBuild Installation Configuration]()
Обратите внимание на поле "Имя", где я назвал эту конкретную конфигурацию v4.0.30319. Вы можете называть это чем угодно, но в идеале имя каким-то образом ссылается на версию.
Вам нужно будет ссылаться на это имя позже в проекте Jenkins PROJECT, который не работает.
Примечание. Желтое предупреждение означает, что поле Путь к MSBuild должно быть заполнено именем каталога, а не именем файла. На практике вам также необходимо ввести имя файла (т.е. Msbuild.exe) или выполнить шаг сборки.
В проекте Jenkins, который не работает, перейдите к шагу сборки MSBuild.
Первое поле на этапе сборки - "Версия MSBuild". Если вы создали шаг сборки перед настройкой любых версий MSBuild, значение здесь будет (по умолчанию).
![Jenkins MSBuild build-step, with (default) msbuild configuration selected]()
После настройки одной или нескольких версий MSBuild выпадающее меню будет заполнено доступными конфигурациями. Выберите тот, который вам нужен.
Здесь вы можете видеть, что я выбрал именованную конфигурацию, которая соответствует установке выше.
![Jenkins MSBuild build-step, with named msbuild configuration selected]()
Ответ 2
Jenkins | Manage Jenkins | Configure System
прокрутите вниз до раздела MSBuild и выберите установки MSBuild.
определить полный путь к msbuild.exe, в моей системе у меня есть 3.5 и v4.0.30319
Примечание. Укажите путь к 32-разрядным инструментам даже в 64-разрядной системе, иначе вы можете получить сообщение об ошибке:
Построение приложения Windows Phone с использованием 64-битного MSBuild не поддерживается.
Итак, в Дженкинсе - это может быть, например:
Название: Версия 3.5
Путь: C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
Название: Версия 4.0
Путь: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSbuild.exe
Ответ 3
Я думаю, вы должны установить абсолютный путь для "msbuild.exe" в вашей конфигурации Jenkins,
например:
C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe
Ответ 4
Вы также можете добавить путь, в котором msbuild.exe, к переменной системной среды PATH node (или узлов), которая запускает это конкретное задание.
Ответ 5
Вы можете попробовать выполнить
%comspec% /k ""c:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86
которая будет временно обновлять переменные пути среды, чтобы отобразить среду сборки VS2010. Выполните это до вызова MSBUILD и посмотрите, что произойдет. Я использую это в своих собственных скриптах сборки без проблем.
Боковое примечание; скорее всего, контрпродуктивно иметь несколько версий MSBUILD на вашем PATH. Сосредоточьтесь на том, чтобы получить одну версию и перейти оттуда.