Fri*_*itz 6 msbuild csproj roslyn .net-5 sourcegenerators
我创建了一个源生成器来扩展满足某些条件的(部分)类。为了检查和查看生成的代码,我通过将以下内容添加到我的项目中来启用这些文件的发射:
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
只要我不进行重构(例如重命名类),这就有效。因为对于每个类,当我重命名“源”类时,都会生成一个文件,但不会删除该文件。
所以我添加了以下代码来清理所有生成的文件(在清理和重建时)
<Target Name="CleanSourceGeneratedFiles" AfterTargets="Clean">
<RemoveDir Directories="Generated" />
</Target>
Run Code Online (Sandbox Code Playgroud)
然而,每次重建都会失败:
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |