<UsingTask TaskName="GenerateBuildInfo" TaskFactory="RoslynCodeTaskFactory"
               AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
        <ParameterGroup>
            <OutputFile ParameterType="System.String" Required="true" />
        </ParameterGroup>
        <Task>
            <Using Namespace="System" />
            <Code Type="Fragment" Language="cs">
                <![CDATA[
var code = $@"using System;

public static class BuildInfo
{{
    public static DateTime BuildTime {{ get; }} = DateTime.Parse(""{DateTime.Now:O}"");
}}";

File.WriteAllText(OutputFile, code);
]]>
            </Code>
        </Task>
    </UsingTask>

    <Target Name="GenerateBuildInfo" BeforeTargets="CoreCompile">
        <GenerateBuildInfo OutputFile="$(IntermediateOutputPath)BuildInfo.g.cs" />
        <ItemGroup>
            <Compile Include="$(IntermediateOutputPath)BuildInfo.g.cs" />
        </ItemGroup>
    </Target>

标签: none