错误 运行 MSBuild

Error Running MSBuild

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

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(283,22): error MSB4086: A numeric comparison was attempted on "10.0.11000.0" that evaluates to "10.0.11000.0" instead of a number, in condition "'$(TargetPlatformVersion)' >= '10.0.11000.0'". [MyProject.csproj]

解决方案中的几个不同项目都会出现这种情况。

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

根据各种在线帖子(例如 this 一个),它似乎(至少在过去的某个时候)是由 Resharper 引起的。但是,我已将 Resharper 更新到最新版本,并 运行 对安装进行了修复,但无济于事。我什至试图在 Visual Studio 内暂停它。

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

如何解决这个错误?

更新

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

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

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

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

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

上面的斜体文本有点太快了,我以为我用确凿的证据抓住了这个问题,但是重新检查那个.targets文件中的代码显示 &gt; 在条件 - 必须根据 MSBuild Conditions,虽然目前还不清楚为什么要用'>='来比较字符串。 在其他 2 种情况下使用它意义不大。无论如何,我怀疑你是对的,这是特定目标文件的问题。

尝试使用 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

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