Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Razor bestanden met een .cshtml extensie worden gecompileerd op zowel build- als publicatietijd met behulp van de Razor SDK. Runtimecompilatie kan eventueel worden ingeschakeld door het project te configureren.
Opmerking
Runtime-compilatie
- Wordt niet ondersteund voor Razor onderdelen van Blazor apps.
- Biedt geen ondersteuning voor globale gebruiksrichtlijnen.
- Biedt geen ondersteuning voor impliciet gebruik van instructies.
- Schakelt .NET Hot Reload uit.
- Wordt aanbevolen voor ontwikkeling, niet voor productie.
Razor verzamelwerk
Compilatietijd en publicatietijd van Razor bestanden is standaard ingeschakeld door de Razor SDK. Wanneer deze functie is ingeschakeld, vormt runtimecompilatie een aanvulling op de compilatie van de build, zodat Razor bestanden kunnen worden bijgewerkt als ze worden bewerkt terwijl de app wordt uitgevoerd.
Het bijwerken van Razor weergaven en Razor pagina's tijdens de ontwikkeling terwijl de app wordt uitgevoerd, wordt ook ondersteund met .NET Hot Reload.
Opmerking
Als runtimecompilatie is ingeschakeld, wordt .NET Hot Reload uitgeschakeld. U wordt aangeraden Hot Reload te gebruiken in plaats van Razor runtimecompilatie tijdens de ontwikkeling.
Runtimecompilatie inschakelen voor alle omgevingen
Runtimecompilatie inschakelen voor alle omgevingen:
Installeer de Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-pakket.
Bel AddRazorRuntimeCompilation in
Program.cs:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() .AddRazorRuntimeCompilation();
Runtimecompilatie voorwaardelijk inschakelen
Runtimecompilatie kan voorwaardelijk worden ingeschakeld, wat ervoor zorgt dat de gepubliceerde uitvoer:
- Maakt gebruik van gecompileerde weergaven.
- Schakelt bestands-watchers niet in in de productieomgeving.
Runtimecompilatie alleen inschakelen voor de ontwikkelomgeving:
Installeer de Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-pakket.
Wanneer de huidige omgeving is ingesteld op Ontwikkeling: bel AddRazorRuntimeCompilation in
Program.cs.var builder = WebApplication.CreateBuilder(args); var mvcBuilder = builder.Services.AddRazorPages(); if (builder.Environment.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); }
Runtime-compilatie kan ook worden ingeschakeld met een hosting-opstartassembly. Runtimecompilatie inschakelen in de ontwikkelomgeving voor specifieke startprofielen:
- Installeer de Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-pakket.
- Wijzig de
environmentVariablessectie van het startprofiel inlaunchSettings.json:Controleer of
ASPNETCORE_ENVIRONMENTis ingesteld op"Development".Stel
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESin op"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation". Met het volgendelaunchSettings.jsonkunt u bijvoorbeeld runtime-compilatie inschakelen voor deViewCompilationSample- enIIS Express-startprofielen:{ "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" } } } }
Met deze methode zijn er geen codewijzigingen nodig in Program.cs. Tijdens runtime zoekt ASP.NET Core naar een hostingstartup-kenmerk op assemblyniveau in Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Het HostingStartup kenmerk geeft de opstartcode van de app op die moet worden uitgevoerd en die opstartcode maakt runtimecompilatie mogelijk.
Runtimecompilatie inschakelen voor een Razor klassebibliotheek
Overweeg een scenario waarin een Razor Pages-project verwijst naar een Razor klassebibliotheek (RCL) met de naam MyClassLib. De RCL bevat een _Layout.cshtml bestand dat wordt gebruikt door MVC- en Razor Pages-projecten. Als u runtimecompilatie wilt inschakelen voor het _Layout.cshtml bestand in die RCL, moet u de volgende wijzigingen aanbrengen in het Razor project Pages:
Schakel runtimecompilatie in met de instructies op Runtime-compilatie voorwaardelijk inschakelen.
Configureer MvcRazorRuntimeCompilationOptions in
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)); });Met de voorgaande code wordt een absoluut pad naar de MyClassLib RCL gebouwd. De PhysicalFileProvider-API wordt gebruikt om mappen en bestanden op dat absolute pad te vinden. Ten slotte wordt de
PhysicalFileProviderinstantie toegevoegd aan een verzameling bestandsaanbieders, die toegang biedt tot de RCL's.cshtmlbestanden.
Aanvullende bronnen
Razor bestanden met een .cshtml extensie worden gecompileerd op zowel build- als publicatietijd met behulp van de Razor SDK. Runtimecompilatie kan eventueel worden ingeschakeld door uw project te configureren.
Razor verzamelwerk
Compilatietijd en publicatietijd van Razor bestanden is standaard ingeschakeld door de Razor SDK. Wanneer deze functie is ingeschakeld, vormt runtimecompilatie een aanvulling op de compilatietijd van de build, zodat Razor bestanden kunnen worden bijgewerkt als ze worden bewerkt.
Runtimecompilatie inschakelen bij het maken van een project
De Razor pagina's en MVC-projectsjablonen bevatten een optie om runtimecompilatie in te schakelen wanneer het project wordt gemaakt. Deze optie wordt ondersteund in ASP.NET Core 3.1 of hoger.
In het dialoogvenster Een nieuwe ASP.NET Core-webtoepassing maken :
- Selecteer ofwel de webapplicatie of de webapplicatie (Model-View-Controller) projectsjabloon.
- Selecteer het selectievakje Runtimecompilatie inschakelen Razor.
Runtimecompilatie inschakelen in een bestaand project
Runtimecompilatie inschakelen voor alle omgevingen in een bestaand project:
Installeer de Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-pakket.
Werk de methode van
Startup.ConfigureServiceshet project bij om een aanroep naar toe te AddRazorRuntimeCompilationvoegen. Voorbeeld:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Runtimecompilatie voorwaardelijk inschakelen in een bestaand project
Runtimecompilatie kan zodanig worden ingeschakeld dat deze alleen beschikbaar is voor lokale ontwikkeling. Voorwaardelijk inschakelen op deze manier zorgt ervoor dat de gepubliceerde uitvoer:
- Maakt gebruik van gecompileerde weergaven.
- Schakelt bestands-watchers niet in in de productieomgeving.
Runtimecompilatie alleen inschakelen in de ontwikkelomgeving:
- Installeer de Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation NuGet-pakket.
- Wijzig de sectie Startprofiel
environmentVariablesinlaunchSettings.json:- Controleer of
ASPNETCORE_ENVIRONMENTis ingesteld op"Development". - Stel
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESin op"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".
- Controleer of
In het volgende voorbeeld is runtimecompilatie ingeschakeld in de Development-omgeving voor de IIS Express en RazorPagesApp startprofielen.
{
"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"
}
}
}
}
Er zijn geen codewijzigingen nodig in de klasse van Startup het project. Tijdens runtime zoekt ASP.NET Core naar een hostingstartup-kenmerk op assemblyniveau in Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Het HostingStartup kenmerk geeft de opstartcode van de app op die moet worden uitgevoerd. Deze opstartcode maakt runtimecompilatie mogelijk.
Runtimecompilatie inschakelen voor een Razor klassebibliotheek
Overweeg een scenario waarin een Razor Pages-project verwijst naar een Razor klassebibliotheek (RCL) met de naam MyClassLib. De RCL bevat een _Layout.cshtml bestand dat alle MVC- en Razor Pages-projecten van uw team verbruiken. U wilt runtimecompilatie inschakelen voor het _Layout.cshtml bestand in die RCL. Breng de volgende wijzigingen aan in het Razor project Pages:
Runtimecompilatie inschakelen met de instructies op Voorwaardelijk runtimecompilatie inschakelen in een bestaand project.
Configureer de compilatieopties voor runtime in
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)); }); }In de voorgaande code wordt een absoluut pad naar de MyClassLib RCL gemaakt. De PhysicalFileProvider-API wordt gebruikt om mappen en bestanden op dat absolute pad te vinden. Ten slotte wordt de
PhysicalFileProviderinstantie toegevoegd aan een verzameling bestandsaanbieders, die toegang biedt tot de RCL's.cshtmlbestanden.