由于.net核心不支持自动版本编号,我手动尝试操作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
工作。它给出的错误是:
表达式&#34;([System.DateTime] :: UtcNow - [System.DateTime] :: UtcNow.Date).TotalSeconds&#34;无法评估。
我怀疑问题是使用减号或额外的括号,但我找不到正确的方法来编写此操作。
答案 0 :(得分:1)
-
导致问题,可能是因为它未被识别为DateTime的实例方法。而是直接调用Subtract:
<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>