是否有用于构建日期/时间的 MSBuild 宏?

Cha*_*lts 3 msbuild macros

假设我有一个带有 Target 部分的构建脚本,如下所示:

    <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>
Run Code Online (Sandbox Code Playgroud)

目前,年份是静态的,必须手动更改。有没有一种简单的方法可以用 $(Year) 之类的东西替换“2014”?我已经检查了 MSBuild 参考,但没有任何反应。

Cha*_*lts 6

由于我正在使用 MSBuild 社区任务和 MSBuild 4,因此我可以替换以下内容:

\n\n
AssemblyCopyright="\xc2\xa9 $(CompanyName) $([System.DateTime]::Now.ToString(`yyyy`))"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这似乎有效。

\n


taf*_*fit 5

由于您使用的是 MsBuild 4,您还可以为此使用属性函数,例如:

<PropertyGroup>
    <CurrentDate>$([System.DateTime]::Now.ToString(yyyy.MM.dd))</CurrentDate>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

只需根据需要格式化收到的日期。还有许多其他功能可用,另请参见http://msdn.microsoft.com/en-us/library/dd633440(v=vs.100).aspx