Last active
November 12, 2024 14:46
-
-
Save KirillOsenkov/f20cb84d37a89b01db63f8aafe03f19b to your computer and use it in GitHub Desktop.
Sample of generating a .cs file during build and adding it to the compilation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Project Sdk="Microsoft.NET.Sdk"> | |
<PropertyGroup> | |
<OutputType>Exe</OutputType> | |
<TargetFramework>net472</TargetFramework> | |
</PropertyGroup> | |
<PropertyGroup> | |
<GeneratedText><![CDATA[ | |
using System%3B | |
public class Hello$(TargetFramework) | |
{ | |
public void Print() | |
{ | |
Console.WriteLine("Hello $(TargetFramework)!")%3B | |
} | |
} | |
]]></GeneratedText> | |
</PropertyGroup> | |
<Target Name="AddGeneratedFile" BeforeTargets="BeforeCompile;CoreCompile" Inputs="$(MSBuildAllProjects)" Outputs="$(IntermediateOutputPath)GeneratedFile.cs"> | |
<PropertyGroup> | |
<GeneratedFilePath>$(IntermediateOutputPath)GeneratedFile.cs</GeneratedFilePath> | |
</PropertyGroup> | |
<ItemGroup> | |
<Compile Include="$(GeneratedFilePath)" /> | |
<FileWrites Include="$(GeneratedFilePath)" /> | |
</ItemGroup> | |
<WriteLinesToFile Lines="$(GeneratedText)" File="$(GeneratedFilePath)" WriteOnlyWhenDifferent="true" Overwrite="true" /> | |
</Target> | |
</Project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Rebuild
doesClean;Build
. I think in that case, because the generated file isn't added to@(FileWrites)
, it's not getting deleted/cleaned up onClean
, soRebuild
doesn't reset its state.Incremental build for targets is unconfigurable: it's always on.
A log at
detailed
ordiagnostic
level should show the target being skipped as up to date.