2012-04-19 4 views
25

У меня есть приложение .net, построенное на .net framework 3.5, я пытаюсь создать это приложение на сервере Jenkins CI. Я добавил плагин MSBuild и добавил путь к файлу .exe 2.0, 3.5 и 4.0 версий MSBuild. Но мои процессы здания не работают, показывая следующее сообщение об ошибке.build .net application in Jenkins using 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 

Может ли кто-нибудь помочь мне? .. ??

ответ

66

Чтобы заставить плагин MSBuild работать, вам необходимо настроить плагин на экране управления Jenkins.

Примечание: в новых версиях Дженкинс вы найдете конфигурацию MSBuild в глобальной конфигурации инструмента:

enter image description here


Jenkins MSBuild Installation Configuration

Обратите внимание на поле "Имя", где я называемой этой конкретной конфигурацией v4.0.30319. Вы могли бы называть это чем угодно, но в идеале имя каким-то образом ссылается на версию.

Вам нужно будет обратиться к этому имени позже в ПРОЕКТЕ Jenkins, который не работает.

Примечание. Желтое предупреждение подразумевает, что поле Путь к 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

+0

Я посмотрел на желтое предупреждение и удалил 'msbuild.exe' и продолжал получать сообщение об ошибке .. ваш ответ был единственным, кто упоминал об этом, и так рад, что вы это добавили! – iamserious

+0

Могу ли я построить два проекта, которые просто используют один. ** Создайте проект или решение Visual Studio с помощью раздела MSBuild **. – MichaelMao

+0

Если вы используете VS2015/C# 6 с msbuild, вы должны указать путь к файлу msbuild для *** C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin ***, спасибо за решение jessehouwing: http://stackoverflow.com/a/32008030/1677041 – Itachi

5

Я думаю, вы должны установить абсолютный путь к «MSBuild.exe» в конфигурации Дженкинс, , например:

C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe 
+0

Он прав. В подключаемом модуле есть ошибка. Конфигурация Jenkins запрашивает путь к файлу MSBuild.exe, но на самом деле это должен быть полный путь к файлу MSBuild.exe. Он предупредит вас, но вы можете сохранить его таким образом, и он работает. – justdan23

-2

Вы можете попробовать выполнить команду

%comspec% /k ""c:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 

, который будет временно обновите переменные пути среды, чтобы отразить среду сборки VS2010. Выполните это до вызова MSBUILD и посмотрите, что произойдет. Я использую это в своих собственных скриптах сборки без проблем.

Сторона примечания; скорее всего, контрпродуктивно иметь несколько версий MSBUILD на вашем PATH. Сосредоточьтесь на том, чтобы работать с одной версией и идти оттуда.

+2

Я рекомендую использовать подключаемый модуль MSBuild для Jenkins. Однако, если вы хотите создать сценарий командной строки, не используйте% comspec%, вместо этого используйте «CALL» без каких-либо дополнительных параметров, и среда останется для остальной части вашего скрипта. Например: CALL "C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86 – justdan23

12
Jenkins | Manage Jenkins | Configure System 

прокрутки вниз до раздела MSBuild и нажмите MSBuild установки

определить полный путь к MSBuild.exe, на моей системе я имею 3.5 и v4.0.30319

Примечание - укажите путь к 32-разрядным инструментам даже в 64-разрядной системе, иначе вы можете получить сообщение об ошибке:

Приложение Windows Phone с использованием MSBuild 64 бит не поддерживается.

Так в Jenkins - это может быть, например:

Имя: Версия 3.5

Путь: C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe

Имя: Версия 4.0

Путь: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSbuild.exe

0

Вы также можете добавить путь, где msbuild.exe, к PA TH переменная среды системы узла (или узлов), которая запускает это конкретное задание.