如果一个版本号大于另一个版本号,我的 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) < 0">true</Setting>
</PropertyGroup>
<Message Text="Setting=$(Setting)"></Message>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
S:\>msbuild test.proj Microsoft (R) Build Engine version
4.0.30319.18408 [Microsoft .NET Framework, version 4.0.30319.18408] Copyright …Run Code Online (Sandbox Code Playgroud) msbuild ×1