我创建了一个源生成器来扩展(部分)满足某些标准的类。为了检查和查看生成的代码,我通过将以下内容添加到我的项目中来启用这些文件的发射:
<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.
因此,我正在寻找另一种方法来使我生成的源代码保持最新,该项目不仅每次尝试都会编译一次。