由于.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>