Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Razor a bővítményt .cshtml tartalmazó fájlok fordítása a létrehozás és a közzététel időpontjában is történik az Razor SDK használatával. A futásidejű fordítás opcionálisan engedélyezhető a projekt konfigurálásával.
Megjegyzés:
Futtatókörnyezet összeállítása:
- Az Razor komponensek a Blazor alkalmazásokhoz nem támogatottak.
- Nem támogatja a globális irányelveket.
- Nem támogatja az implicit direktívák használatát.
- Letiltja a .NET forró újratöltését.
- Fejlesztéshez ajánlott, nem javasolt éles használatra.
Razor összeállítás
Az SDK alapértelmezett módon engedélyezi a Razor fájlok fordítását a buildelési- és közzétételi idő alattRazor. Ha engedélyezve van, a futtatási idejű fordítás kiegészíti a buildidőbeli fordítást, így a Razor fájlok frissíthetők, ha az alkalmazás futtatása közben szerkesztik őket.
A Razor nézetek és Razor lapok frissítése a fejlesztés során, miközben az alkalmazás fut, a .NET Hot Reload használatával is támogatott.
Megjegyzés:
Ha engedélyezve van, a futtatókörnyezet fordítása letiltja a .NET Hot Reload funkciót. Javasoljuk, hogy a fejlesztés során futásidejű Razor fordítás helyett használja a Hot Reload szolgáltatást.
Futásidejű fordítási lehetőség engedélyezése minden környezet számára
A futásidejű fordítás engedélyezése minden környezetben:
Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
HívásAddRazorRuntimeCompilation:
Program.csvar builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() .AddRazorRuntimeCompilation();
Futásidejű fordítás feltételes engedélyezése
A futtatókörnyezet összeállítása feltételesen engedélyezhető, ami biztosítja a közzétett kimenetet:
- Lefordított nézeteket használ.
- Nem engedélyezi a fájlfigyelőket éles környezetben.
A futásidejű fordítás engedélyezése csak a fejlesztési környezethez:
Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
Hívás AddRazorRuntimeCompilation a
Program.csalatt, ha az aktuális környezet fejlesztésre van állítva:var builder = WebApplication.CreateBuilder(args); var mvcBuilder = builder.Services.AddRazorPages(); if (builder.Environment.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); }
A futtatásidejű fordítás egy hosting startup assembly-vel is engedélyezhető. A futásidejű fordítás engedélyezése a fejlesztési környezetben bizonyos indítási profilokhoz:
- Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
- Az indítási profil
environmentVariablesrészének módosítása alaunchSettings.json-ben:Ellenőrizze, hogy
ASPNETCORE_ENVIRONMENT"Development"van-e beállítva.Állítsa a
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESelemet"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"értékre. Például a következőlaunchSettings.jsonlehetővé teszi a futtatókörnyezet összeállítását aViewCompilationSampleésIIS Expressindítási profilok számára:{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:7098", "sslPort": 44332 } }, "profiles": { "ViewCompilationSample": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7173;http://localhost:5251", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" } } } }
Ezzel a módszerrel nem szükséges kódmódosítást végrehajtani a .Program.cs Futásidőben a ASP.NET Core egy szerelvényszintű HostingStartup attribútumot keres a következőben Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation: . Az HostingStartup attribútum megadja a végrehajtandó alkalmazásindítási kódot, és hogy az indítási kód lehetővé teszi a futtatókörnyezet fordítását.
Futtatókörnyezeti fordítás engedélyezése osztálytárakhoz Razor
Fontolja meg azt a forgatókönyvet, amelyben egy Razor Pages-projekt egy Razor MyClassLib nevű osztálytárra (RCL) hivatkozik. Az RCL egy _Layout.cshtml MVC- és Razor Pages-projektek által használt fájlt tartalmaz. Ha engedélyezni szeretné a futtatókörnyezet összeállítását az _Layout.cshtml adott RCL-fájlban, végezze el a következő módosításokat a Razor Pages projektben:
A futási idő alatti fordítást feltételesen futási idő alatti fordítás engedélyezése című utasításokkal engedélyezze.
MvcRazorRuntimeCompilationOptions konfigurálása
Program.cs:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(builder.Environment.ContentRootPath, "..", "MyClassLib")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); });Az előző kód egy abszolút elérési utat hoz létre a MyClassLib RCL-hez. A PhysicalFileProvider API-val könyvtárakat és fájlokat kereshet az abszolút elérési úton. Végül hozzáadja a
PhysicalFileProviderpéldányt egy fájlszolgáltatói gyűjteményhez, amely lehetővé teszi az RCL.cshtmlfájljainak elérését.
További erőforrások
Razor a bővítményt .cshtml tartalmazó fájlok fordítása a létrehozás és a közzététel időpontjában is történik az Razor SDK használatával. A futásidejű fordítás opcionálisan engedélyezhető a projekt konfigurálásával.
Razor összeállítás
Az SDK alapértelmezett módon engedélyezi a Razor fájlok fordítását a buildelési- és közzétételi idő alattRazor. Ha engedélyezve van, a futásidejű fordítás kiegészíti a fordítási idő alatt végzett fordítást, így a fájlok szerkesztésük után frissíthetők.
Futásidejű kompiláció engedélyezése a projekt létrehozásakor
A Razor Pages és az MVC projektsablonok lehetővé teszik a futtatókörnyezet fordítását a projekt létrehozásakor. Ez a beállítás ASP.NET Core 3.1 vagy újabb verziókban támogatott.
Az Új ASP.NET Core-webalkalmazás létrehozása párbeszédpanelen:
- Válassza ki a webalkalmazást vagy a webalkalmazás (Model-View-Controller) projektsablont.
- Jelölje be a Futásidejű fordítás engedélyezése Razor jelölőnégyzetet.
Futásidejű fordítás engedélyezése egy meglévő projektben
Futásidejű fordítás engedélyezése egy meglévő projekt összes környezetéhez:
Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
Frissítse a projekt
Startup.ConfigureServicesmetódusát úgy, hogy tartalmazzon egy AddRazorRuntimeCompilation hívást. Például:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Futásidejű fordítás feltételes engedélyezése meglévő projektben
A futásidejű fordítás engedélyezhető olyan módon, hogy csak helyi fejlesztéshez legyen elérhető. Az ilyen módon történő feltételes engedélyezés biztosítja, hogy a közzétett kimenet:
- Lefordított nézeteket használ.
- Nem engedélyezi a fájlfigyelőket éles környezetben.
A futásidejű fordítás engedélyezése kizárólag a fejlesztési környezetben:
- Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
- Az indítási profil
environmentVariablesszakaszának módosítása a következőbenlaunchSettings.json:- Ellenőrizze, hogy
ASPNETCORE_ENVIRONMENTbe van-e állítva"Development". - Állítsa a
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESelemet"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"értékre.
- Ellenőrizze, hogy
Az alábbi példában a futásidejű fordítás engedélyezve van a Fejlesztési környezetben a IIS Express és RazorPagesApp indítási profilok számára.
{
"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"
}
}
}
}
A projekt Startup osztályában nincs szükség kódmódosításra. Futásidőben a ASP.NET Core egy szerelvényszintű HostingStartup attribútumot keres a következőben Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation: . Az HostingStartup attribútum megadja a végrehajtandó alkalmazásindítási kódot. Ez az indítási kód lehetővé teszi a futtatókörnyezet fordítását.
Futtatókörnyezeti fordítás engedélyezése osztálytárakhoz Razor
Fontolja meg azt a forgatókönyvet, amelyben egy Razor Pages-projekt egy Razor MyClassLib nevű osztálytárra (RCL) hivatkozik. Az RCL tartalmaz egy _Layout.cshtml fájlt, amelyet a csapat MVC- és Razor Pages-projektjei használnak. Szeretné engedélyezni a futásidejű fordítást az _Layout.cshtml fájlhoz abban az RCL-ben. Végezze el a következő módosításokat a Razor Pages projektben:
Engedélyezze a futtatásidejű fordítást a feltételes futtatásidejű fordítás engedélyezése meglévő projektben utasításai szerint.
A
Startup.ConfigureServicesalatt konfigurálja a futtatókörnyezet fordítási beállításait.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)); }); }Az előző kódban létrejön a MyClassLib RCL abszolút elérési útja. A PhysicalFileProvider API-val könyvtárakat és fájlokat kereshet az abszolút elérési úton. Végül hozzáadja a
PhysicalFileProviderpéldányt egy fájlszolgáltatói gyűjteményhez, amely lehetővé teszi az RCL.cshtmlfájljainak elérését.