可以物理访问 Source Generator 创建的文件吗?
Posted
技术标签:
【中文标题】可以物理访问 Source Generator 创建的文件吗?【英文标题】:Can Source Generator created files be physically reached? 【发布时间】:2022-01-20 01:38:43 【问题描述】:是否有任何标准方法/选项,如何安排通过Source Generators
生成并添加到构建过程中的文件在项目结构中也是物理可见的(因此开发人员可以查看结果代码,例如通过 VS 解决方案资源管理器窗口) ?
我的意思是除了我将代码直接保存到生成器的Execute()
中的一个文件之外,我预计这可能会带来其他复杂性(尚未尝试过)。
编辑:
据此:https://github.com/dotnet/roslyn/issues/49249#issuecomment-809807528,生成器执行期间不允许 I/O。 根据debug session(进入生成代码功能),生成的源码至少在temp文件夹下,如C:\Users\user\AppData\Local\Temp\.vsdbgsrc\some-guid\FileNameHint.cs
。不幸的是,标准 VS 导航 (F12) 不起作用(无论调试会话活动如何)。
【问题讨论】:
【参考方案1】:使用生成器将以下内容添加到项目中:
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>DesiredPathForGeneratedStuff</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
【讨论】:
非常感谢,正在寻找在 .NET 6 中恢复*.razor.g.cs
文件的方法以上是关于可以物理访问 Source Generator 创建的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章