如何在面向 .Net6 的项目中查看使用 VS2022 从 Razor 组件编译的 C# 代码?

Eug*_*mov 13 c# razor blazor .net-6.0 visual-studio-2022

我有一个组件,我想查看 RazorSourceGenerator *_razor.g.cs 文件生成的内容。

以前使用 VS2019 和 .Net5,我可以打开“\obj\Debug\net5.0\Razor\Pages”文件夹并在那里找到生成的文件。

现在,如果我在 *.razor 组件中出现一些编译错误,我可以看到一条错误消息,其中引用了“\Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator”文件夹,但那里没有这样的文件夹。似乎在项目构建后它被删除了。

有没有办法保留这个文件夹来查看 *.razor 文件编译结果?

Eug*_*mov 20

感谢 Maggo 先生指出这篇文章。让我发布完整答案。

要保留生成的 *_razor.g.cs 文件,请EmitCompilerGeneratedFiles在项目文件中设置该属性。但在这种情况下,您将无法通过双击“输出”或“错误列表”窗口中的错误来查看生成的代码,因为文件将保存到

obj\Debug\generated\Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator
Run Code Online (Sandbox Code Playgroud)

福尔德。但错误会参考

Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator\
Run Code Online (Sandbox Code Playgroud)

文件夹。因此,您需要通过设置属性来指定文件应保留在该文件夹中CompilerGeneratedFilesOutputPath

因此,简短的回答是将其添加到项目部分的项目文件中:

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


Mis*_*goo 7

EmitCompilerGeneratedFiles您可以在 csproj 中将该属性设置为 true。

这是关于它如何工作以及文件写入位置的选项的很好的描述