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

How to see c# code compiled from Razor component with VS2022 in project targeting .Net6?

我有一个组件,我想查看由 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文件编译结果?

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

这是good write-up它是如何工作的以及文件写入位置的选项

感谢 Maggo 先生指点这篇文章。让我post完整回答。

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

obj\Debug\generated\Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator

前辈。但是报错会参考

Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator\

文件夹。因此,您需要通过设置 CompilerGeneratedFilesOutputPath 属性.

来指定文件应保留在此文件夹中

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

  <PropertyGroup>
    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
    <CompilerGeneratedFilesOutputPath>.</CompilerGeneratedFilesOutputPath>
  </PropertyGroup>