Search code examples
c#razorblazor.net-6.0visual-studio-2022

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


I have a component and I want to see generated by RazorSourceGenerator *_razor.g.cs file.

Previously with VS2019 and .Net5 I could open the "\obj\Debug\net5.0\Razor\Pages" folder and found the generated files there.

Now, If I have some compillation error in *.razor component I can see a error message with refers to the "\Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator" folder but there is no such folder. It seems it is deleted after the project has build.

Is there way to preserve this folder to see the *.razor file compillation result?


Solution

  • Thank you Mister Maggo for pointing to the article. Let me post full answer.

    To preserve generated *_razor.g.cs files set the EmitCompilerGeneratedFiles property in the project file. But in this case you will not be able to see generated code by double clicking on error in Output or Error List window because files will be saved into

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

    forlder. But the error will refer to

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

    folder. So you need to specify that files should be preserved in this folder by setting the CompilerGeneratedFilesOutputPath property.

    So, the short anser is to add this into your project file in the project section:

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