Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Razorfiler med en .cshtml filändelse kompileras under både bygg- och publiceringstid med hjälp av SDKRazor. Körningskompilering kan aktiveras vid behov genom att konfigurera projektet.
Anmärkning
Körningskompilering:
- Stöds inte för Razor komponenter i Blazor appar.
- Stöder inte globala användningsdirektiv.
- Stöder inte implisita 'using'-direktiv.
- Inaktiverar .NET Hot Reload.
- Rekommenderas för utveckling, inte för produktion.
Razor kompilering
Kompilering av Razor-filer under bygg- och publiceringstid är som standard aktiverad av Razor SDK. När det är aktiverat kompletterar runtime-kompilering byggtidkompilering, vilket gör att Razor filer kan uppdateras om de redigeras medan appen körs.
Uppdatering av Razor vyer och Razor sidor under utveckling medan appen körs stöds också med hjälp av .NET Hot Reload.
Anmärkning
När det är aktiverat inaktiverar körningskompilering .NET Hot Reload. Vi rekommenderar att du använder Hot Reload i stället för Razor körningskompilering under utveckling.
Aktivera körningskompilering för alla miljöer
Så här aktiverar du körningskompilering för alla miljöer:
Installera Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-paket.
Ring AddRazorRuntimeCompilation in
Program.cs:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() .AddRazorRuntimeCompilation();
Aktivera körtidskompilering villkorligt
Körningskompilering kan aktiveras villkorligt, vilket säkerställer att publicerade utdata:
- Använder kompilerade vyer.
- Aktiverar inte filövervakare i produktion.
Så här aktiverar du endast körningskompilering för utvecklingsmiljön:
Installera Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-paket.
Anropa AddRazorRuntimeCompilation i
Program.csnär den aktuella miljön är inställd på Utveckling:var builder = WebApplication.CreateBuilder(args); var mvcBuilder = builder.Services.AddRazorPages(); if (builder.Environment.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); }
Runtime-kompilering kan också aktiveras med ett värdstartsassembly. Så här aktiverar du körningskompilering i utvecklingsmiljön för specifika startprofiler:
- Installera Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-paket.
- Ändra startprofilens
environmentVariablesavsnitt ilaunchSettings.json:Kontrollera att
ASPNETCORE_ENVIRONMENTär inställt på"Development".Ställ in
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESpå"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation". Följande aktiverar till exempellaunchSettings.jsonkörningskompilering för startprofilernaViewCompilationSampleochIIS Express:{ "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" } } } }
Med den här metoden behövs inga kodändringar i Program.cs. Under körning söker ASP.NET Core efter ett HostingStartup-attribut på nivån för en assembly i . Attributet HostingStartup anger den startkod för appen som ska köras och att startkoden möjliggör körningskompilering.
Aktivera körningskompilering för ett Razor klassbibliotek
Tänk dig ett scenario där ett Razor Pages-projekt refererar till ett Razor klassbibliotek (RCL) med namnet MyClassLib. RCL innehåller en _Layout.cshtml fil som används av MVC- och Razor Pages-projekt. Om du vill aktivera körningskompilering för _Layout.cshtml filen i den RCL:en gör du följande ändringar i Razor pages-projektet:
Aktivera körningskompilering med anvisningarna i Aktivera körningskompilering villkorligt.
Konfigurera MvcRazorRuntimeCompilationOptions i
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)); });Föregående kod skapar en absolut sökväg till MyClassLib RCL. Api:et PhysicalFileProvider används för att hitta kataloger och filer på den absoluta sökvägen. Slutligen läggs instansen
PhysicalFileProvidertill i en filproviderssamling som ger åtkomst till RCL:s.cshtmlfiler.
Ytterligare resurser
Razorfiler med en .cshtml filändelse kompileras under både bygg- och publiceringstid med hjälp av SDKRazor. Kompilering vid körning kan aktiveras valfritt genom att konfigurera projektet.
Razor kompilering
Kompilering av Razor-filer under bygg- och publiceringstid är som standard aktiverad av Razor SDK. När det är aktiverat kompletterar runtime-kompilering kompilering vid byggtillfället, så att Razor filer kan uppdateras om de redigeras.
Aktivera körningskompilering vid projektstart
Mallarna Razor Pages och MVC-projekt innehåller ett alternativ för att aktivera körningskompilering när projektet skapas. Det här alternativet stöds i ASP.NET Core 3.1 eller senare.
I dialogrutan Skapa ett nytt ASP.NET Core-webbprogram :
- Välj antingen webbprogrammet eller webbprogrammet (modell-View-Controller) projektmallen.
- Välj kryssrutan Aktivera Razor körningskompilering.
Aktivera körningskompilering i ett befintligt projekt
Så här aktiverar du körningskompilering för alla miljöer i ett befintligt projekt:
Installera Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-paket.
Uppdatera projektets
Startup.ConfigureServicesmetod så att den innehåller ett anrop till AddRazorRuntimeCompilation. Till exempel:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Aktivera villkorligt körningstidskompilering i ett befintligt projekt
Körningskompilering kan aktiveras så att den endast är tillgänglig för lokal utveckling. Att aktivera villkorligt på detta sätt säkerställer att det publicerade resultatet:
- Använder kompilerade vyer.
- Aktiverar inte filövervakare i produktion.
Så här aktiverar du endast körkompilering i utvecklingsmiljö:
- Installera Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-paket.
- Ändra startprofilavsnittet
environmentVariablesilaunchSettings.json:- Verifiera
ASPNETCORE_ENVIRONMENTär inställt på"Development". - Ställ in
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESpå"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".
- Verifiera
I följande exempel aktiveras körningskompilering i utvecklingsmiljön för IIS Express och RazorPagesApp startprofilerna:
{
"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"
}
}
}
}
Inga kodändringar behövs i projektets Startup klass. Under körning söker ASP.NET Core efter ett HostingStartup-attribut på nivån för en assembly i . Attributet HostingStartup anger den appstartkod som ska köras. Den startkoden möjliggör körningskompilering.
Aktivera körningskompilering för ett Razor klassbibliotek
Tänk dig ett scenario där ett Razor Pages-projekt refererar till ett Razor klassbibliotek (RCL) med namnet MyClassLib. RCL innehåller en _Layout.cshtml fil som alla ditt teams MVC- och Razor Pages-projekt förbrukar. Du vill aktivera körningskompilering för _Layout.cshtml-filen i den RCL:en. Gör följande ändringar i pages-projektet Razor :
Aktivera körningskompilering med anvisningarna i Villkorligt aktivera körningskompilering i ett befintligt projekt.
Konfigurera körningskompileringsalternativen i
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)); }); }I föregående kod skapas en absolut sökväg till MyClassLib RCL. Api:et PhysicalFileProvider används för att hitta kataloger och filer på den absoluta sökvägen. Slutligen läggs instansen
PhysicalFileProvidertill i en filproviderssamling som ger åtkomst till RCL:s.cshtmlfiler.
Ytterligare resurser
ASP.NET Core