c# Source Generator应该刷新/删除发出的文件



我创建了一个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>

相关内容

  • 没有找到相关文章

最新更新