【问题标题】:Jenkins can't find msbuild詹金斯找不到 msbuild
【发布时间】:2014-07-24 23:43:42
【问题描述】:

我在 Windows Server 2012 上安装了 Jenkins,一切正常。但是,一旦我尝试配置 MSBuild 和 VS Code 指标插件,就会收到以下错误:

C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe 不是 Jenkins master 上的目录(但可能存在于某些 slave 上)

我检查了路径并且它们是正确的,但 Jenkins 无法访问它们。

任何人都可以提出可能的问题。

谢谢

【问题讨论】:

  • 有没有想过这个?

标签: jenkins msbuild windows-server-2012


【解决方案1】:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe

Jenkins 在其要求方面实事求是地向您撒谎。 MSBuild.exe 一个可执行文件,而不是它报告的目录。输入框要求您识别包含 MSBuild.exe 的文件夹但执行的作业 MSBuild 要求您提供文件名。解决 Job 和 Configuration Manager 之间这种不一致的方法是 Add the MSBuild 插件配置,而不在 Path to MsBuild 输入中提供可执行文件的名称以满足“添加插件”页面的验证要求。

添加插件后,您可以修改Path to MsBuild 以包含可执行文件的名称(当然是MSBuild.exe),而不是验证错误,您将收到警告。

忽略警告。
无论如何保存它。

它将绕过添加插件所需的初始验证并“正常工作”。

您的 Jenkins 服务可能仍需要通过“允许它与桌面交互”来授予对文件系统的访问权限,正如其他海报所提到的那样。

但您的主要问题是插件配置与使用配置的代理冲突,为了使用插件执行构建,您必须使用解决方法。

【讨论】:

  • 我的完整错误: MSBuild.exe 的路径:C:\Program Files (x86)\MSBuild\12.0\Bin 执行命令 cmd.exe /C " "C:\Program Files (x86 )\MSBuild\12.0\Bin" jenkins-net-demo.sln " && exit %%ERRORLEVEL%% from C:\Program Files (x86)\Jenkins\jobs\Demo\workspace [workspace] $ cmd.exe /C " "C:\Program Files (x86)\MSBuild\12.0\Bin" jenkins-net-demo.sln " && exit %%ERRORLEVEL%% '"C:\Program Files (x86)\MSBuild\12.0\Bin"' 是不被识别为内部或外部命令、可运行程序或批处理文件。构建步骤“使用 MSBuild 构建 Visual Studio 项目或解决方案”将构建标记为失败
  • 修正了我的答案;有一段时间没有配置 jenkins,显然忘记了您必须使用“MSBuild 路径”无文件名输入 MSBuild 插件配置的小细节,以便 [Add] 按钮可用,然后使用可执行文件修改路径,忽略警告,然后仍然点击[保存]。进行此更改后,我运行了我的示例构建,它成功了。
  • 这是一篇旧帖子,但只是为了帮助最终来到这里的人,以避免从 msbuild 中获取警告消息删除扩展名“.exe”,如下所示:(msbuld 不是 exe 文件一个文件)C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild
  • 我遇到了一个问题,即 nuget.exe 会自动检测 msbuild 版本并在不同时间检测到不同版本。我尝试使用 -MSBuildPath 参数,但即使路径确实存在,也无法解析路径。按照您的建议添加 MSBuild 安装后,我的 nuget.exe 始终正确检测到 MSBuild 15。
【解决方案2】:

我遇到了同样的问题,我的解决方案是:

如果您将 Jenkins 作为 Window 的服务运行,您可能需要启用该服务以与桌面交互。执行以下操作:

打开服务模块(按:WindowsKey+R > Services.msc)

  1. 右键单击 Jenkins 服务并选择“属性”
  2. 在“登录”选项卡上,以“本地系统帐户”运行并勾选 “允许服务与桌面交互”复选框

-- 或者--

您可以通过命令行简单地运行 Jenkins。即:“java -jar jenkins.war”(jenkins.war 文件位于你的 Jenkins 安装目录中)。

干杯,

J.

【讨论】:

    【解决方案3】:

    从路径中的 msbuild.exe 末尾删除扩展名“.exe”以避免出现警告:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild

    【讨论】:

      【解决方案4】:

      因此,您有两台装有 Jenkins 的服务器,一台是主服务器(没有 msbuild),另一台是从属服务器(这个有 msbuild)。当您的作业(在主服务器上)运行时,msbuild 步骤会失败,因为它在主服务器上不存在。

      您需要强制您的作业仅在带有 msbuild 的服务器上运行,而不是在主服务器上运行。这样做的方法如下:

      1. 打开具有 msbuild 的节点的配置
      2. 标签字段中添加msbuild
      3. 保存节点配置
      4. 打开作业配置
      5. 高级项目选项部分上方找到限制此项目可以运行的位置复选框并选中它
      6. 标签表达式字段中添加msbuild
      7. 保存作业
      8. 构建作业

      【讨论】:

        【解决方案5】:

        • 主服务器上是否存在C:\Windows\Microsoft.NET\Framework\v3.5\
        • Jenkins 用户是否有权访问此文件夹?

        【讨论】:

          【解决方案6】:

          我还看到“...不是 Jenkins master 上的目录...”错误消息,但是当我尝试构建它时它仍然有效。

          不要忘记为您的项目选择 MS Build 版本,而不是(默认)。

          见:build .net application in Jenkins using MSBuild

          【讨论】:

            【解决方案7】:

            看起来这个问题已经在 1.26 版本中得到解决:JENKINS-28679

            【讨论】:

              猜你喜欢
              • 2012-09-30
              • 2018-02-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-12-08
              相关资源
              最近更新 更多