【问题标题】:Error Running MSBuild运行 MSBuild 时出错
【发布时间】:2016-07-04 09:25:43
【问题描述】:

在我的机器上尝试通过批处理文件运行 MSBuild 时,我开始收到以下错误。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(283,22):错误 MSB4086:尝试在“10.0.11000.0”上进行数字比较计算结果为“10.0.11000.0”而不是数字,在 条件“'$(TargetPlatformVersion)' >= '10.0.11000.0'”。 [MyProject.csproj]

这发生在解决方案中的几个不同项目上。

我目前正在运行 VS2015(更新 3)。我在星期五从更新 2 更新。所以这可能是相关的。

根据网上的各种帖子(例如this one),它似乎(至少在过去的某个时间点)是由 Resharper 引起的。但是,我已将 Resharper 更新到最新版本,并在安装时运行修复,但无济于事。我什至尝试在 Visual Studio 本身中暂停它。

我还尝试修复 VS215 安装本身。但我仍然收到错误。

我该如何解决这个错误?

更新

所以当我运行这个批处理文件时,它使用VisualStudioVersion=12.0 运行。这似乎是问题的一部分。当我将它重新指向12.0 时,构建运行良好。

检查引发异常的目标文件,您可以在第 283 行看到:

<PropertyGroup>
  <SdkIsRS1OrLater>False</SdkIsRS1OrLater>
  <SdkIsRS1OrLater 
    Condition="'$(TargetPlatformVersion)' &gt;= '10.0.11000.0'">True</SdkIsRS1OrLater>
</PropertyGroup>

所以我不完全确定为什么会这样,但这似乎是 MS 的目标文件中的一个问题?

【问题讨论】:

  • 我在 Microsoft Connect 上创建了一个问题:connect.microsoft.com/VisualStudio/Feedback/Details/2891723
  • 这里也一样。 Upd3 有问题。 VS 编译没有任何问题
  • 由于某种原因,我无法在连接时访问该链接。你碰巧得到关于这个的任何新信息吗?我也坚持下去。 :(
  • @Michael 我也一样。他们要求提供更多信息,但链接现在已失效。我无论如何都无法访问该页面。
  • 我手动将 Microsoft.AppxPackage.Targets 文件的第 283 行更改为“==”而不是“>=”。它现在可以工作了,但我不知道这是否会导致其他问题。希望微软只是在未来的更新中修复它。我的特定项目甚至不使用任何与 Appx 相关的东西,所以在我的情况下可能没问题。

标签: visual-studio-2015 msbuild resharper


【解决方案1】:

尝试使用 VS2015 附带的批处理文件设置路径和环境变量,而不是手动设置 msbuild 路径和“VisualStudioVersion”,为此将以下内容添加到批处理文件中:

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"

我不确定根本原因是什么,我怀疑 MSBuild 和目标文件版本不匹配。

有关上述批处理文件的更多信息,请参阅https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

【讨论】:

  • 我实际上使用了C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat - VcVarsall 仅在您安装 C++ 工具时出现。 VsDevCmd 是用于设置 dev 命令提示符的批处理文件。
【解决方案2】:

当我们在 Teamcity 中进行构建时,我遇到了同样的错误。在更改 teamcity 构建步骤配置以使用 MSBuild 工具 2015 作为 MSBuild 版本和 14.0 作为 MSBuild 工具版本后,我得到了它。

【讨论】:

    【解决方案3】:

    是的,我怀疑是一样的 - 似乎有人做了替换并放了 &amp;gt; 符号而不是 &amp;gt;。 我在该文件中在逻辑上必须为&amp;gt; 的地方找到了&amp;gt; 的3 个条目 PS:这不是答案,cmets 不支持字符筛选

    上面的斜体文本有点太快了,我以为我用确凿证据发现了问题,但是重新检查该 .targets 文件中的代码显示&amp;gt; 在条件下使用正确 - 一个有对这些符号进行编码 MSBuild Conditions,虽然目前还不清楚它为什么要尝试将字符串与 '>=' 进行比较。 在其他 2 种情况下使用它就没有意义了。无论如何,我怀疑你是对的,这是特定目标文件的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2011-05-15
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多