Razorをコンパイルしたときの中間ファイルを出力する

Razorは、C#のソースコードに展開されて、そのC#がコンパイルされる。  

そのため、Razorのコンパイルエラーは、Razorのパースエラーと、C#のエラーの両方があり得る。


たまに、Razorの気持ちが分からなくて、どういうC#のコードに展開されているのか確認したいときがあるが、ASP.NET Coreではオンメモリで処理されるので、そういうときは ファイルに書き出すオプションを有効化する必要がある。


<PropertyGroup>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>


すると、ビルドしたときに obj/Debug/<sdk-version>/generated/Microsoft.NET.Sdk.Razor.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/ に保存される。