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. Сосредоточьтесь на том, чтобы получить одну версию и перейти оттуда.