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/
に保存される。