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