关于使用MSBuild在Jenkins中的c#:build .net应用程序

build .net application in Jenkins using MSBuild

我有一个基于.net framework 3.5构建的.net应用程序,我试图在Jenkins CI服务器上构建该应用程序。 我添加了MSBuild插件,并添加了2.0、3.5和4.0版本的MSBuild的.exe文件的路径。 但是我的构建过程因显示以下错误消息而失败。

1
2
3
4
5
6
7
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

谁能帮助我.. ??


要使MSBuild插件正常工作,您需要在Jenkins管理屏幕中配置插件。

注意:在较新的Jenkins版本中,您可以在"全局工具配置"中找到MSBuild配置:

enter image description here

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


1
Jenkins | Manage Jenkins | Configure System

向下滚动到" MSBuild"部分,然后单击" MSBuild安装"

定义msbuild.exe的完整路径,在我的系统上,我有3.5和v4.0.30319

注意-即使在64位系统上,也要指定32位工具的路径,否则可能会收到错误消息:

Building Windows Phone application using MSBuild 64 bit is not supported.

因此,在詹金斯(Jenkins)-例如:

名称:版本3.5

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

名称:版本4.0

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


我认为您应该在Jenkins配置中为" msbuild.exe"设置绝对路径,
例如:

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


您还可以将msbuild.exe所在的路径添加到运行该特定作业的一个或多个节点的PATH系统环境变量中。


您可以尝试执行

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

命令,该命令将临时更新您的环境路径变量以反映VS2010构建环境。在致电MSBUILD之前执行此操作,然后看看会发生什么。我在自己的构建脚本中使用了它,没有任何问题。

边注;在您的PATH上拥有多个版本的MSBUILD很可能适得其反。专注于使一个版本工作并从那里开始。