2012-04-19 16 views
25

Tengo una aplicación .NET basada en .NET Framework 3.5, estoy intentando construir esta aplicación en el servidor Jenkins CI. He agregado el complemento MSBuild y he agregado la ruta al archivo .exe de las versiones 2.0, 3.5 y 4.0 de MSBuild. Pero mis procesos de construcción están fallando al mostrar el siguiente mensaje de error.crear la aplicación .NET en Jenkins usando 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 

¿Alguien podría ayudarme por favor .. ??

Respuesta

66

Para que el complemento MSBuild funcione, debe configurar el complemento en la pantalla de administración de Jenkins.

NOTA: en las versiones más recientes Jenkins a encontrar la configuración de MSBuild en la configuración global de la herramienta:

enter image description here


Jenkins MSBuild Installation Configuration

Nota el campo "Nombre", donde he llamado esta configuración particular v4.0.30319. Podrías llamarlo como quieras, pero idealmente el nombre se referirá de alguna manera a la versión.

Tendrá que referirse a este nombre más adelante en el PROYECTO Jenkins que está fallando.

Nota: La advertencia amarilla implica que el campo Ruta de acceso a MSBuild debe rellenarse con un nombre de directorio en lugar de un nombre de archivo. En la práctica, también debe ingresar el nombre del archivo (es decir, msbuild.exe) o el paso de compilación fallará.

En el proyecto de Jenkins que está fallando, vaya al paso de compilación de MSBuild.

El primer campo en el paso de compilación es "Versión de MSBuild". Si creó el paso de compilación antes de configurar cualquier versión de MSBuild, el valor aquí será (predeterminado).

Jenkins MSBuild build-step, with (default) msbuild configuration selected

Después de configurar una o más versiones de MSBuild, el abajo gota se rellenará con las configuraciones disponibles. Seleccione el que necesita.

Puede ver aquí que he seleccionado la configuración nombrada que coincide con la instalación anterior.

Jenkins MSBuild build-step, with named msbuild configuration selected

+0

Miré la advertencia amarilla y eliminé 'msbuild.exe' y seguí recibiendo el error ... su respuesta fue el único que mencionó algo al respecto, ¡y me alegra que hayas agregado eso! – iamserious

+0

¿Podría construir esos dos proyectos? Solo use uno ** ¿Cree un proyecto o solución de Visual Studio usando la sección MSBuild **? – MichaelMao

+0

Si está utilizando VS2015/C# 6 con msbuild, debe especificar la ruta del archivo msbuild a *** C: \ Archivos de programa (x86) \ MSBuild \ 14.0 \ Bin ***, gracias por la solución de jessehouwing: http://stackoverflow.com/a/32008030/1677041 – Itachi

5

creo que se debe establecer una ruta absoluta para "msbuild.exe" en la configuración de Jenkins, por ejemplo:

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

Tiene razón. Hay un error en el complemento. La configuración de Jenkins pregunta por la ruta al MSBuild.exe, pero en realidad tiene que ser la ruta COMPLETA de MSBuild.exe. Te lo advertirá, pero puedes guardarlo de esta manera y funciona. – justdan23

-2

Usted podría intentar ejecutar el comando

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

, que se Actualice temporalmente las variables de ruta de entorno para reflejar el entorno de compilación VS2010. Ejecute esto antes de llamar a MSBUILD y ver qué pasa. Lo uso en mis propios scripts de compilación sin problemas.

Nota al margen; es muy probable que sea contraproducente tener múltiples versiones de MSBUILD en su RUTA. Concéntrese en hacer funcionar una versión y vaya desde allí.

+2

Recomiendo usar el complemento MSBuild para Jenkins. Sin embargo, si desea crear un script de línea de comando, no use% comspec%, en su lugar use 'CALL' sin ningún parámetro adicional y el entorno permanecerá para el resto del script. Por ejemplo: LLAME "C: \ Archivos de programa \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86 – justdan23

12
Jenkins | Manage Jenkins | Configure System 

de desplazamiento hasta la sección de MSBuild MSBuild y haga clic en instalaciones

definir la ruta completa a MSBuild.exe, en mi sistema tengo 3.5 y v4.0.30319

Nota - Especifique la ruta a las herramientas de 32 bits incluso en un sistema de 64 bits; de lo contrario, es posible que aparezca un mensaje de error:

No se admite la creación de aplicaciones Windows Phone con MSBuild de 64 bits.

Así que en Jenkins - que podría ser por ejemplo:

Nombre: Versión 3.5

Path: C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe

Nombre: Versión 4.0

Path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSbuild.exe

0

También puede agregar la ruta de acceso donde está msbuild.exe, al PA Variable de entorno del sistema TH del nodo (o nodos) que ejecuta ese trabajo específico.

Cuestiones relacionadas