Razorkompilace souborů v ASP.NET Core
Autor: Rick Anderson
Razorsoubory s příponou . cshtml jsou kompilovány jak při sestavování, tak při publikování pomocí Razor sady SDK. Kompilace za běhu může být volitelně povolena konfigurací projektu.
Razor kompilace
RazorSada SDK ve výchozím nastavení povoluje kompilaci souborů pro čas sestavení a publikování Razor . Pokud je povoleno, kompilace za běhu doplňuje kompilaci při sestavení a umožňuje Razor aktualizovat soubory, pokud jsou upravovány.
Povolit kompilaci za běhu při vytváření projektu
RazorŠablony projektů stránky a MVC obsahují možnost Povolit kompilaci za běhu při vytvoření projektu. tato možnost je podporovaná v ASP.NET Core 3,1 a novějších.
v dialogovém okně vytvořit novou ASP.NET Core webovou aplikaci :
- Vyberte šablonu projektu webová aplikace nebo Webová aplikace (model-zobrazení-kontroler) .
- Zaškrtněte políčko Povolit Razor kompilaci za běhu .
Povolit kompilaci za běhu v existujícím projektu
Povolení kompilace za běhu pro všechna prostředí v existujícím projektu:
Nainstalujte Microsoft. AspNetCore. Mvc. Razor . balíček NuGet RuntimeCompilation
Aktualizujte metodu projektu
Startup.ConfigureServicestak, aby zahrnovala volání AddRazorRuntimeCompilation . Například:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Podmíněně povolit kompilaci za běhu v existujícím projektu
Je možné povolit kompilaci za běhu, aby byla dostupná pouze pro místní vývoj. Podmíněné povolení tímto způsobem zajistí, že publikovaný výstup:
- Používá kompilovaná zobrazení.
- Nepovoluje sledovací procesy souborů v produkčním prostředí.
Chcete-li povolit kompilaci za běhu pouze ve vývojovém prostředí:
- Nainstalujte Microsoft. AspNetCore. Mvc. Razor . balíček NuGet RuntimeCompilation
- Upravte část spouštěcí profil
environmentVariablesv launchSettings.jsdne:- Ověřte
ASPNETCORE_ENVIRONMENT, že je nastavené na"Development". - Nastavte
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESna"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".
- Ověřte
V následujícím příkladu je kompilace modulu runtime ve vývojovém prostředí povolena pro IIS Express RazorPagesApp profily spuštění a:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57676",
"sslPort": 44364
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"RazorPagesApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
}
}
}
Ve třídě projektu nejsou potřeba žádné změny kódu Startup . v době běhu ASP.NET Core vyhledá atribut HostingStartup na úrovni sestavení v Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation . HostingStartupAtribut určuje spouštěcí kód aplikace, který se má spustit. Tento spouštěcí kód umožňuje kompilaci za běhu.
Povolit kompilaci za běhu pro Razor knihovnu tříd
Vezměte v úvahu scénář, ve kterém se Razor projekt stránky odkazuje na Razor knihovnu tříd (RCL) s názvem MyClassLib. RCL obsahuje soubor _Layout. cshtml , který využívá všechny projekty MVC a Razor Pages vašeho týmu. Chcete povolit kompilaci za běhu pro soubor _Layout. cshtml v tomto RCL. Proveďte následující změny v Razor projektu stránky:
Povolit kompilaci za běhu pomocí instrukcí v podmíněně povolit kompilaci za běhu v existujícím projektu.
Nakonfigurujte možnosti kompilace za běhu v
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(HostEnvironment.ContentRootPath, "..", "MyClassLib")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); }); }V předchozím kódu je vytvořena absolutní cesta k MyClassLib RCL. Rozhraní PhysicalFileProvider API se používá k nalezení adresářů a souborů v této absolutní cestě. Nakonec
PhysicalFileProviderje instance přidána do kolekce zprostředkovatelů souborů, která umožňuje přístup k souborům . cshtml RCL.
Další zdroje informací
Razorsoubory s příponou . cshtml jsou kompilovány jak při sestavování, tak při publikování pomocí Razor sady SDK. Kompilace za běhu může být volitelně povolena konfigurací projektu.
Razor kompilace
RazorSada SDK ve výchozím nastavení povoluje kompilaci souborů pro čas sestavení a publikování Razor . Pokud je povoleno, kompilace za běhu doplňuje kompilaci při sestavení a umožňuje Razor aktualizovat soubory, pokud jsou upravovány.
Povolit kompilaci za běhu při vytváření projektu
RazorŠablony projektů stránky a MVC obsahují možnost Povolit kompilaci za běhu při vytvoření projektu. tato možnost je podporovaná v ASP.NET Core 3,1 a novějších.
v dialogovém okně vytvořit novou ASP.NET Core webovou aplikaci :
- Vyberte šablonu projektu webová aplikace nebo Webová aplikace (model-zobrazení-kontroler) .
- Zaškrtněte políčko Povolit Razor kompilaci za běhu .
Povolit kompilaci za běhu v existujícím projektu
Povolení kompilace za běhu pro všechna prostředí v existujícím projektu:
Nainstalujte Microsoft. AspNetCore. Mvc. Razor . balíček NuGet RuntimeCompilation
Aktualizujte metodu projektu
Startup.ConfigureServicestak, aby zahrnovala volání AddRazorRuntimeCompilation . Například:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Podmíněně povolit kompilaci za běhu v existujícím projektu
Je možné povolit kompilaci za běhu, aby byla dostupná pouze pro místní vývoj. Podmíněné povolení tímto způsobem zajistí, že publikovaný výstup:
- Používá kompilovaná zobrazení.
- Nepovoluje sledovací procesy souborů v produkčním prostředí.
Chcete-li povolit kompilaci za běhu pouze ve vývojovém prostředí:
- Nainstalujte Microsoft. AspNetCore. Mvc. Razor . balíček NuGet RuntimeCompilation
- Upravte část spouštěcí profil
environmentVariablesv launchSettings.jsdne:- Ověřte
ASPNETCORE_ENVIRONMENT, že je nastavené na"Development". - Nastavte
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESna"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".
- Ověřte
V následujícím příkladu je kompilace modulu runtime ve vývojovém prostředí povolena pro IIS Express RazorPagesApp profily spuštění a:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57676",
"sslPort": 44364
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"RazorPagesApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
}
}
}
Ve třídě projektu nejsou potřeba žádné změny kódu Startup . v době běhu ASP.NET Core vyhledá atribut HostingStartup na úrovni sestavení v Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation . HostingStartupAtribut určuje spouštěcí kód aplikace, který se má spustit. Tento spouštěcí kód umožňuje kompilaci za běhu.
Povolit kompilaci za běhu pro Razor knihovnu tříd
Vezměte v úvahu scénář, ve kterém se Razor projekt stránky odkazuje na Razor knihovnu tříd (RCL) s názvem MyClassLib. RCL obsahuje soubor _Layout. cshtml , který využívá všechny projekty MVC a Razor Pages vašeho týmu. Chcete povolit kompilaci za běhu pro soubor _Layout. cshtml v tomto RCL. Proveďte následující změny v Razor projektu stránky:
Povolit kompilaci za běhu pomocí instrukcí v podmíněně povolit kompilaci za běhu v existujícím projektu.
Nakonfigurujte možnosti kompilace za běhu v
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(HostEnvironment.ContentRootPath, "..", "MyClassLib")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); }); }V předchozím kódu je vytvořena absolutní cesta k MyClassLib RCL. Rozhraní PhysicalFileProvider API se používá k nalezení adresářů a souborů v této absolutní cestě. Nakonec
PhysicalFileProviderje instance přidána do kolekce zprostředkovatelů souborů, která umožňuje přístup k souborům . cshtml RCL.
Další zdroje informací
RazorSoubor je zkompilován za běhu, když Razor je vyvolána přidružená stránka nebo zobrazení MVC. Razorsoubory jsou kompilovány jak při sestavování, tak při publikování pomocí Razor sady SDK.
Razor Kompilace
Kompilace souborů v době sestavení a publikování je ve výchozím nastavení povolená Razor sadou Razor SDK. Úpravy Razor souborů po jejich aktualizaci se podporují v době sestavení. Ve výchozím nastavení jsou s aplikací nasazeny pouzeViews.dll soubory a žádná sestavení .cshtml nebo odkazy potřebné ke kompilaci Razor souborů.
Důležité
Nástroj předkompilace je zastaralý a ve ASP.NET Core 3.0 bude odebrán. Doporučujeme migrovat na Razor sadu SDK.
Sada SDK je efektivní pouze v případě, že nejsou v souboru projektu nastaveny žádné vlastnosti specifické Razor pro předkompilaci. Nastavením vlastnosti souboru .csproj například MvcRazorCompileOnPublish true zakážete sadu Razor SDK.
Kompilace modulu runtime
Kompilace v době sestavení je doplněna kompilací souborů za Razor běhu. ASP.NET Core MVC překompiluje soubory při změně obsahu Razor souboru .cshtml.