36

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

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  

任何人都可以帮助我......?

4

5 回答 5

82

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

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

在此处输入图像描述


Jenkins MSBuild 安装配置

请注意“名称”字段,我在其中将此特定配置称为 v4.0.30319。您可以随意称呼它,但理想情况下,该名称会以某种方式指代版本。

您需要稍后在失败的 Jenkins PROJECT 中引用此名称。

注意:黄色警告表示“MSBuild 路径”字段应填充目录名而不是文件名。实际上,您也需要在此处输入文件名(即 msbuild.exe),否则构建步骤将失败。

在失败的 Jenkins 项目中,转到 MSBuild 构建步骤。

构建步骤中的第一个字段是“MSBuild 版本”。如果您在配置任何 MSBuild 版本之前创建了构建步骤,则此处的值为(默认)。

Jenkins MSBuild 构建步骤,选择了(默认)msbuild 配置

配置一个或多个 MSBuild 版本后,下拉菜单将填充可用配置。选择您需要的那个。

您可以在这里看到,我现在选择了与上述安装匹配的命名配置。

Jenkins MSBuild 构建步骤,选择了命名的 msbuild 配置

于 2012-04-19T12:43:59.407 回答
13
Jenkins | Manage Jenkins | Configure System

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

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

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

不支持使用 MSBuild 64 位构建 Windows Phone 应用程序。

所以在詹金斯 - 它可能是例如:

名称:版本 3.5

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

名称:4.0版

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

于 2012-12-04T00:39:09.313 回答
6

I think you should set an absolute path for "msbuild.exe" in your Jenkins configuration, for example:

C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe
于 2012-04-19T12:26:28.073 回答
2

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

于 2015-10-21T08:38:28.707 回答
-2

你可以尝试执行

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

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

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

于 2012-04-19T12:27:08.633 回答