Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Razor pliki z .cshtml rozszerzeniem są kompilowane zarówno w czasie kompilacji, jak i publikowania przy użyciu zestawu Razor SDK. Kompilacja środowiska uruchomieniowego może być opcjonalnie włączona przez skonfigurowanie projektu.
Uwaga
Kompilacja środowiska uruchomieniowego:
- Nie jest obsługiwana w przypadku Razor składników Blazor aplikacji.
- Nie obsługuje globalnych dyrektyw using.
- Nie obsługuje niejawnych dyrektyw using.
- Wyłącza Przeładowywanie na gorąco .NET.
- Jest zalecany do programowania, a nie w środowisku produkcyjnym.
Razor kompilacja
Kompilacja plików w czasie kompilacji i czasu publikowania Razor jest domyślnie włączona przez zestaw Razor SDK. Po włączeniu kompilacja środowiska uruchomieniowego uzupełnia kompilację w czasie kompilacji, umożliwiając Razor aktualizowanie plików, jeśli są one edytowane podczas działania aplikacji.
Aktualizowanie Razor widoków i Razor stron podczas tworzenia aplikacji jest również obsługiwane przy użyciu platformy .NET Przeładowywanie na gorąco.
Uwaga
Po włączeniu kompilacja środowiska uruchomieniowego wyłącza Przeładowywanie na gorąco .NET. Zalecamy używanie Przeładowywanie na gorąco zamiast Razor kompilacji środowiska uruchomieniowego podczas programowania.
Włączanie kompilacji środowiska uruchomieniowego dla wszystkich środowisk
Aby włączyć kompilację środowiska uruchomieniowego dla wszystkich środowisk:
Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
Wywołaj metodę AddRazorRuntimeCompilation w pliku
Program.cs:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() .AddRazorRuntimeCompilation();
Warunkowe włączanie kompilacji środowiska uruchomieniowego
Kompilacja środowiska uruchomieniowego można włączyć warunkowo, co gwarantuje, że opublikowane dane wyjściowe:
- Używa skompilowanych widoków.
- Nie włącza obserwatorów plików w środowisku produkcyjnym.
Aby włączyć kompilację uruchomieniową tylko dla środowiska Development:
Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
Wywołaj AddRazorRuntimeCompilation metodę ,
Program.csgdy bieżące środowisko ma ustawioną wartość Programowanie:var builder = WebApplication.CreateBuilder(args); var mvcBuilder = builder.Services.AddRazorPages(); if (builder.Environment.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); }
Kompilację środowiska uruchomieniowego można również włączyć za pomocą zestawu uruchamiania hostingu. Aby włączyć kompilację Development środowiska uruchomieniowego w środowisku dla określonych profilów uruchamiania:
- Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
- Zmodyfikuj sekcję profilu uruchamiania
environmentVariablesw plikulaunchSettings.json:Sprawdź, czy
ASPNETCORE_ENVIRONMENTustawiono wartość"Development".Ustaw wartość opcji
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESna"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation". Na przykład następującelaunchSettings.jsonfunkcje umożliwiają kompilację środowiska uruchomieniowego dla profilów uruchamianiaViewCompilationSampleiIIS 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" } } } }
W przypadku tego podejścia w programie Program.csnie są wymagane żadne zmiany kodu. W czasie wykonywania ASP.NET Core wyszukuje atrybut HostingStartup na poziomie zestawu w pliku Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Atrybut określa kod uruchamiania HostingStartup aplikacji do wykonania, a kod uruchamiania umożliwia kompilację środowiska uruchomieniowego.
Włączanie kompilacji środowiska uruchomieniowego Razor dla biblioteki klas
Rozważmy scenariusz, w którym Razor projekt Pages odwołuje się do Razor biblioteki klas (RCL) o nazwie MyClassLib. Lista RCL zawiera _Layout.cshtml plik używany przez projekty MVC i Razor Pages. Aby włączyć kompilację _Layout.cshtml środowiska uruchomieniowego dla pliku na tej liście RCL, wprowadź następujące zmiany w projekcie Razor Pages:
Włącz kompilację środowiska uruchomieniowego z instrukcjami w temacie Włączanie kompilacji środowiska uruchomieniowego warunkowo.
Skonfiguruj MvcRazorRuntimeCompilationOptions w programie
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)); });Powyższy kod tworzy ścieżkę bezwzględną do listy RCL myClassLib . Interfejs API PhysicalFileProvider służy do lokalizowania katalogów i plików w tej ścieżce bezwzględnej.
PhysicalFileProviderNa koniec wystąpienie jest dodawane do kolekcji dostawców plików, która umożliwia dostęp do plików listy RCL.cshtml.
Dodatkowe zasoby
Razor pliki z .cshtml rozszerzeniem są kompilowane zarówno w czasie kompilacji, jak i publikowania przy użyciu zestawu Razor SDK. Kompilacja środowiska uruchomieniowego może być opcjonalnie włączona przez skonfigurowanie projektu.
Razor kompilacja
Kompilacja plików w czasie kompilacji i czasu publikowania Razor jest domyślnie włączona przez zestaw Razor SDK. Po włączeniu kompilacja środowiska uruchomieniowego uzupełnia kompilację w czasie kompilacji, umożliwiając Razor aktualizowanie plików w przypadku ich edytowania.
Włączanie kompilacji środowiska uruchomieniowego podczas tworzenia projektu
Szablony Razor projektów Pages i MVC zawierają opcję włączania kompilacji środowiska uruchomieniowego podczas tworzenia projektu. Ta opcja jest obsługiwana w programie ASP.NET Core 3.1 lub nowszym.
W oknie dialogowym Tworzenie nowej aplikacji internetowej platformy ASP.NET Core:
- Wybierz szablon projektu Aplikacja internetowa lub Aplikacja internetowa (Model-View-Controller).
- Zaznacz pole wyboru Włącz Razor kompilację środowiska uruchomieniowego.
Włączanie kompilacji środowiska uruchomieniowego w istniejącym projekcie
Aby włączyć kompilację środowiska uruchomieniowego dla wszystkich środowisk w istniejącym projekcie:
Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
Zaktualizuj metodę projektu
Startup.ConfigureServices, aby uwzględnić wywołanie metody AddRazorRuntimeCompilation. Na przykład:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Warunkowe włączanie kompilacji środowiska uruchomieniowego w istniejącym projekcie
Kompilacja środowiska uruchomieniowego może być włączona, tak aby była dostępna tylko w przypadku programowania lokalnego. Warunkowe włączenie w ten sposób gwarantuje, że opublikowane dane wyjściowe:
- Używa skompilowanych widoków.
- Nie włącza obserwatorów plików w środowisku produkcyjnym.
Aby włączyć kompilację czasu wykonywania tylko w środowisku Development:
- Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
- Zmodyfikuj sekcję profilu
environmentVariablesuruchamiania w plikulaunchSettings.json:- Sprawdź, czy
ASPNETCORE_ENVIRONMENTustawiono wartość"Development". - Ustaw wartość opcji
ASPNETCORE_HOSTINGSTARTUPASSEMBLIESna"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".
- Sprawdź, czy
W poniższym przykładzie kompilacja środowiska uruchomieniowego jest włączona w Development środowisku dla profilów uruchamiania IIS Express i RazorPagesApp :
{
"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"
}
}
}
}
W klasie projektu Startup nie są wymagane żadne zmiany kodu. W czasie wykonywania ASP.NET Core wyszukuje atrybut HostingStartup na poziomie zestawu w pliku Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Atrybut HostingStartup określa kod uruchamiania aplikacji do wykonania. Ten kod startowy umożliwia kompilację środowiska uruchomieniowego.
Włączanie kompilacji środowiska uruchomieniowego Razor dla biblioteki klas
Rozważmy scenariusz, w którym Razor projekt Pages odwołuje się do Razor biblioteki klas (RCL) o nazwie MyClassLib. Lista RCL zawiera _Layout.cshtml plik, z którego korzystają wszystkie projekty MVC i Razor Pages twojego zespołu. Chcesz włączyć kompilację środowiska uruchomieniowego _Layout.cshtml dla pliku w tej liście RCL. Wprowadź następujące zmiany w projekcie Razor Pages:
Włącz kompilację środowiska uruchomieniowego z instrukcjami w temacie Warunkowe włączanie kompilacji środowiska uruchomieniowego w istniejącym projekcie.
Skonfiguruj opcje kompilacji środowiska uruchomieniowego w programie
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)); }); }W poprzednim kodzie jest tworzona ścieżka bezwzględna do listy RCL MyClassLib . Interfejs API PhysicalFileProvider służy do lokalizowania katalogów i plików w tej ścieżce bezwzględnej.
PhysicalFileProviderNa koniec wystąpienie jest dodawane do kolekcji dostawców plików, która umożliwia dostęp do plików listy RCL.cshtml.
Dodatkowe zasoby
ASP.NET Core