我创建了一个Source Generator来扩展(部分)满足某些标准的类。为了检查和查看生成的代码,我通过在我的项目中添加以下内容来启用这些文件的发射:
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
只要我不做重构(比如重命名类),这就可以工作。因为对于每个类都会生成一个文件,但当我重命名"源"时不会删除它。类。
所以我添加了以下代码来清理所有生成的文件(清理和重建)
<Target Name="CleanSourceGeneratedFiles" AfterTargets="Clean">
<RemoveDir Directories="Generated" />
</Target>
然而,每秒钟重建失败:Error CS2001 Source file 'xyz.generated.cs' could not be found.
所以我正在寻找另一种方法来保持我生成的源代码是最新的,在那里项目不仅每秒钟编译一次。
试试这个。
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
<Target Name="CleanSourceGeneratedFiles" BeforeTargets="BeforeBuild" DependsOnTargets="$(BeforeBuildDependsOn)">
<RemoveDir Directories="Generated" />
</Target>
<ItemGroup>
<Compile Remove="Generated**" />
<Content Include="Generated**" />
</ItemGroup>