Charlie Salts
Charlie Salts

Reputation: 13488

Is there an MSBuild macro for build date/time?

Suppose I have a build script with a Target section like the following:

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

At the moment, the year is static and has to be changed manually. Is there a simple way of replacing "2014" with something like $(Year)? I've checked the MSBuild reference but nothing jumps out at me.

Upvotes: 8

Views: 4717

Answers (2)

taffit
taffit

Reputation: 2099

Since you are using MsBuild 4 you could also use a property function for this, like e.g.:

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

Just format the recieved date as you need it. There are also plenty of other functions available, see also http://msdn.microsoft.com/en-us/library/dd633440(v=vs.100).aspx.

Upvotes: 16

Charlie Salts
Charlie Salts

Reputation: 13488

Since I'm using MSBuild Community Tasks and MSBuild 4, I can substitute the following:

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

which seems to work.

Upvotes: 6

Related Questions