可以物理访问源生成器创建的文件吗?

sha*_*ner 12 c# csharp-source-generator

是否有任何标准方法/选项,如何安排通过生成Source Generators并添加到构建过程中的文件在项目结构中也物理可见(以便开发人员可以通过 VS 解决方案资源管理器窗口查看结果代码)?

我的意思是,除了将代码直接保存到生成器中的文件中之外Execute(),我预计这可能会带来其他复杂性(尚未尝试)。

编辑:

  • 根据此: https: //github.com/dotnet/roslyn/issues/49249#issuecomment-809807528,生成器执行中不允许 I/O。
  • 根据调试会话(进入生成的代码功能),生成的源代码至少在临时文件夹中可用,例如C:\Users\user\AppData\Local\Temp\.vsdbgsrc\some-guid\FileNameHint.cs. 不幸的是,标准 VS 导航 (F12) 不起作用(无论调试会话活动如何)。

sha*_*ner 28

使用生成器将以下内容添加到项目中:

<PropertyGroup>
    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
    <CompilerGeneratedFilesOutputPath>DesiredPathForGeneratedStuff</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果您仅指定第一个标签,则“CompilerGenerateFilesOutputPath”默认为“$(IntermediateOutputPath)/ generated”,例如“obj/Debug/ generated”。 (3认同)