【问题标题】:MSB4019 from VS2012 solution when building on Jenkins在 Jenkins 上构建时来自 VS2012 解决方案的 MSB4019
【发布时间】:2013-12-26 15:41:51
【问题描述】:

我正在设置我们的构建服务器。我在 Windows 7 机器上安装了 Jenkins,在构建 64 位版本的解决方案时遇到了问题。

我们正在使用适用于 Windows 桌面的 Visual Studio 2012 Express。 Jenkins 使用 MSBuild 插件,目标是 64 位 MSbuild exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

但是,当它运行 msbuild 时,没有正确解析环境变量。 VCTargetsPath。

如果我保持一切原样,那么 MSBuild 的输出就是这个

错误 MSB4019:未找到导入的项目“C:\Microsoft.Cpp.Default.props”。确认声明中的路径正确,并且该文件存在于磁盘上。

我在注册表中使用了 VCTargetsPath 变量、Windwos 环境变量以及 Jenkins Eviornment 变量。我注意到了这种行为。

如果我将 VCTargetsPath 设置为“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110”,则 msbuild 的输出与上述相同。但是,如果我将其设置为“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0”,那么输出将变为此。

错误 MSB4019:未找到导入的项目“C:\progra~2\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props”。确认声明中的路径正确,并且该文件存在于磁盘上。

磁贴 Microsoft.Cpp.Default.props 位于“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110”我检查了环境变量长度的限制,它应该是2048 个字符。我在这里遗漏了一些明显的东西吗?我发现一些信息基本上说我将不得不以特定顺序重新安装所有东西,这很烦人(但也很微软)。

【问题讨论】:

    标签: visual-c++ visual-studio-2012 msbuild jenkins windows-7-x64


    【解决方案1】:

    我通过添加
    /p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"
    更优雅
    /p:VisualStudioVersion=12.0

    解决了这个问题 进入
    Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments

    【讨论】:

      【解决方案2】:

      您对构建服务器的第一轮修复尝试。

      在构建机器上安装适当的 SDK。

      http://www.microsoft.com/en-us/download/details.aspx?id=8279

      如果这不起作用,请反馈。

      编辑:

      /p:VisualStudioVersion=11.0

      将其添加到您的命令行...作为 msbuild.exe 的参数

      编辑:

      C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
      

      我有一个 64 位版本的 msbuild.exe。 这不是你所展示的。 我只是猜测,没什么具体的,仅供参考。

      【讨论】:

      • 刚刚安装它,现在我收到错误“MSB8008:指定的平台工具集 (v110) 未安装或无效”。打算用这个四处逛逛。
      • 您尝试构建的 csproj(?) 上的目标框架是...4.0 还是 4.5。
      • 这是一个原生 C++ 应用程序。它的平台工具集是 v110。
      • 那么/p参数提示就是我得到的全部了。
      • 谢谢,但这也没有用。我有一种感觉,在 vs2012 之上安装 sdk 会破坏一些东西。我会深吸一口气,然后再潜入这个。
      【解决方案3】:

      尝试将 /p:PlatformTarget=x86 作为参数之一传递给 MSBuild。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-24
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        相关资源
        最近更新 更多