App_Web_*)。public static class HtmlHelperExtensions
{
public static MvcHtmlString ListViewAssemblies(this HtmlHelper helper)
{
var ul = new TagBuilder("ul");
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.StartsWith("App_Web_")))
{
var li = new TagBuilder("li");
li.InnerHtml = asm.FullName;
ul.InnerHtml += li.ToString();
}
return new MvcHtmlString(ul.ToString());
}
}
public class FooController : Controller
{
public ActionResult Action1() => View();
public ActionResult Action2() => View();
}
public class BarController : Controller
{
public ActionResult Action1() => View();
public ActionResult Action2() => View();
}
四個 View (~/Views/Foo/Action1.cshtml 等) 內容相同:
<div>當前View類型:@this.GetType().AssemblyQualifiedName</div>
<div>當前加載的View程序集:</div>
@Html.ListViewAssemblies()

關鍵發現:
Foo/Action1、Foo/Action2) 編譯至同一組件,型別命名空間含 Controller 名稱 (ASP.Views_Foo_Action1_cshtml)。Foo vs Bar) 編譯至不同組件 (App_Web_foo... vs App_Web_bar...)。App_Web_<hash>,hash 含目錄路徑資訊。BuildManager 偵測虛擬路徑對應實體檔案。RazorTemplateEngine) 產生 C# 程式碼 (繼承 WebViewPage)。CSharpCodeProvider 編譯為組件 (臨時檔案於 Temporary ASP.NET Files)。AppDomain,型別快取於 BuildManager。Razor View 採目錄級動態編譯,同目錄 View 共享組件,型別命名含 Controller/Action 路徑。理解編譯產物結構有助於除錯、效能調優與部署策略選擇。