2014-03-24 18 views
0

假設我有類似以下的目標部分構建腳本:是否有建立日期/時間的MSBuild宏?

<Target Name="AssemblyVersionMAIN" Inputs="@(AssemblyVersionFiles)" Outputs="UpdatedAssemblyVersionFiles"> 
     <Attrib Files="%(AssemblyVersionFiles.FullPath)" Normal="true"/> 
     <AssemblyInfo 
      CodeLanguage="CS" 
      OutputFile="%(AssemblyVersionFiles.FullPath)" 
      AssemblyProduct="$(ProductName)" 
      AssemblyTitle="$(ProductName)" 
      AssemblyCompany="$(CompanyName)" 
      AssemblyCopyright="© $(CompanyName) 2014" <!-- THIS LINE --> 
      AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
      AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" 
      AssemblyInformationalVersion="$(Major).$(Minor).$(Build).$(Revision)"> 
      <Output TaskParameter="OutputFile" ItemName="UpdatedAssemblyVersionFiles"/> 
     </AssemblyInfo> 
    </Target> 

目前,今年是靜態的,必須手動更改。是否有一種簡單的方法用「$(年)」來代替「2014」?我已經檢查了MSBuild參考,但沒有任何東西跳出來。

回答

2

由於您使用的MSBuild 4,你也可以使用一個屬性功能對於這一點,像例如: -

<PropertyGroup> 
    <CurrentDate>$([System.DateTime]::Now.ToString(yyyy.MM.dd))</CurrentDate> 
</PropertyGroup> 

,因爲你需要它只是格式化收到日期。還有很多其他功能可用,另請參閱http://msdn.microsoft.com/en-us/library/dd633440(v=vs.100).aspx

+0

如何將該值存入我的'AssemblyCopyright'變量中,就像我在此答案[此處](http://stackoverflow.com/a/22613738/37971)中那樣? –

+0

你比我快;-)。無論您如何解決問題,或者如果您需要更多時間,請定義可在整個構建文件中使用的屬性。 也不要忘記解決問題(無論是你的還是我的,對我無關緊要)。如果答案是有幫助的,我也會很高興,因爲我在這裏很新。 – taffit

0

由於我使用的MSBuild社區任務和的MSBuild 4,我可以替代以下幾點:

AssemblyCopyright="© $(CompanyName) $([System.DateTime]::Now.ToString(`yyyy`))" 

這似乎工作。

相關問題