2017-04-25 39 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