Msbuild MSB4086:尝试进行数字比较

Msbuild MSB4086:尝试进行数字比较,msbuild,Msbuild,如果一个版本号大于另一个版本号,则我的msbuild需要执行条件操作。 我试着像下面这样编写代码,但发现我得到了一个错误(也在下面)。我哪里出错了 <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Main" ToolsVersion="4.0"> &

如果一个版本号大于另一个版本号,则我的msbuild需要执行条件操作。 我试着像下面这样编写代码,但发现我得到了一个错误(也在下面)。我哪里出错了

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
     DefaultTargets="Main"
     ToolsVersion="4.0">

  <UsingTask TaskName="CompareVersions" TaskFactory="CodeTaskFactory"     AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <LeftHandSide Required="true"/>
      <RightHandSide Required="true"/>
      <Result ParameterType="System.Int32" Output="true"/>
    </ParameterGroup>
    <Task>
      <Code Type="Fragment" Language="cs">
        Version a = Version.Parse( LeftHandSide );
        Version b = Version.Parse( RightHandSide );
        Result = a.CompareTo(b);
      </Code>
    </Task>
  </UsingTask>

   <Target Name="Main">
    <CompareVersions LeftHandSide="3.7" RightHandSide="3.6">
      <Output ItemName="ComparisonResult" TaskParameter="Result"/>
    </CompareVersions>
    <Message Text="ComparisonResult=$(ComparisonResult)"></Message>
    <PropertyGroup>
      <Setting Condition="$(ComparisonResult) &lt; 0">true</Setting>
    </PropertyGroup>
    <Message Text="Setting=$(Setting)"></Message>
   </Target>

</Project>


版本a=Version.Parse(左手边);
Version b=Version.Parse(右手边);
结果=a。与(b)相比;

真的

S:\>msbuild test.proj Microsoft(R)生成引擎版本
4.0.30319.18408[微软.NET框架,版本4.0.30319.18408]版权所有(C)微软公司。版权所有。
构建开始于2013年12月4日15:26:38。
节点1上的项目“S:\test.proj”(默认目标)。
主要内容:
比较结果=
S:\test.proj(28,16):错误MSB4086:在条件n“$(ComparisonResult)<0”中,尝试对“$(ComparisonResult)”进行数值比较,其计算结果为“”,而不是数字。
已完成生成项目“S:\test.proj”(默认目标)——失败。
生成失败。
“S:\test.proj”(默认目标)(1)->
(主要目标)->
S:\test.proj(28,16):错误MSB4086:在“$(ComparisonResult)<0”的条件下,尝试对“$(ComparisonResult)”进行数值比较,其计算结果为“”,而不是数字。
0个警告
1个错误
时间流逝00:00:00.09
S:\>
好的

<CompareVersions LeftHandSide="3.7" RightHandSide="3.6">
  <Output ItemName="ComparisonResult" TaskParameter="Result"/>
</CompareVersions>

应该是这样的:

<CompareVersions LeftHandSide="3.7" RightHandSide="3.6">
  <Output PropertyName="ComparisonResult" TaskParameter="Result"/>
</CompareVersions>


PropertyName而不是ItemName升级visual studio对我很有帮助。
帮助->检查更新

更新所有NueGet软件包

<CompareVersions LeftHandSide="3.7" RightHandSide="3.6">
  <Output PropertyName="ComparisonResult" TaskParameter="Result"/>
</CompareVersions>