由于.net core不支持自动版本编号,因此我手动尝试操纵msbuild以便根据生成日期自动生成版本号。

我有以下属性组:

<PropertyGroup>
    <CurrentDate>$([System.DateTime]::UtcNow.ToString(o))</CurrentDate>
    <SecondsSinceMidnight>$(([System.DateTime]::UtcNow - [System.DateTime]::UtcNow.Date).TotalSeconds)</SecondsSinceMidnight>
    <Version>$([System.DateTime]::UtcNow.Year).$([System.DateTime]::UtcNow.Month).$([System.DateTime]::UtcNow.Day).$(SecondsSinceMidnight)</Version>
  </PropertyGroup>


CurrentDate属性的效果很好,但我似乎无法使SecondsSinceMidnight正常工作。它给出的错误是:


  无法评估表达式“([[System.DateTime] :: UtcNow-[System.DateTime] :: UtcNow.Date).TotalSeconds”。


我怀疑问题出在负号或括号中,但我很难找到编写此操作的正确方法。

最佳答案

-引起问题,可能是因为它未被识别为DateTime的实例方法。而是直接调用减法:

<Target Name="SubtractDates">
  <PropertyGroup>
    <SecondsSinceMidnight>$([System.DateTime]::UtcNow.Subtract($([System.DateTime]::UtcNow.Date)))</SecondsSinceMidnight>
    <Version>$([System.DateTime]::UtcNow.Year).$([System.DateTime]::UtcNow.Month).$([System.DateTime]::UtcNow.Day).$(SecondsSinceMidnight)</Version>
  </PropertyGroup>
  <Message Text="SecondsSinceMidnight=$(SecondsSinceMidnight)" />
  <Message Text="Version=$(Version)" />
</Target>

10-05 22:43
查看更多