2017-04-25 95 views
2

由于.net核心不支持自动版本编号,我正在手动尝试操作msbuild,以便根据生成日期自动生成版本号。如何减去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” 不能进行评价。

我怀疑问题是用减号或额外的括号,但我无法找到正确的方式来编写此操作。

回答

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> 
+0

完美谢谢,我完全忘记了DateTime有一个减法。 – KallDrexx