gpt4 book ai didi

msbuild - C# Source Generator 应该刷新/删除发出的文件

转载 作者:行者123 更新时间:2023-12-05 05:56:18 25 4
gpt4 key购买 nike

我创建了一个源代码生成器来扩展(部分)满足特定条件的类。为了检查和查看生成的代码,我通过将以下内容添加到我的项目来启用这些文件的发射:

    <PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>

只要我不进行重构——比如重命名一个类,它就可以工作。因为对于每个类,当我重命名“源”类时,都会生成一个文件但不会删除该文件。

所以我添加了以下代码来清理所有生成的文件(在清理和重建时)

    <Target Name="CleanSourceGeneratedFiles" AfterTargets="Clean">
<RemoveDir Directories="Generated" />
</Target>

然而,每第二次重建都会失败:错误 CS2001 找不到源文件“xyz.generated.cs”。

所以我正在寻找另一种方法来使我生成的源代码保持最新,其中项目不仅会在每次尝试时编译一次。

最佳答案

试试这个。它对我有用。

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

关于msbuild - C# Source Generator 应该刷新/删除发出的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69194115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com