Razor kompilacja plików w programie ASP.NET Core

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:

Razor Kompilacji

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:

  1. Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.

  2. 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ę środowiska uruchomieniowego tylko dla środowiska deweloperskiego:

  1. Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.

  2. Wywołaj AddRazorRuntimeCompilation metodę , Program.cs gdy 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ę środowiska uruchomieniowego w środowisku programistycznym dla określonych profilów uruchamiania:

  1. Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
  2. Zmodyfikuj sekcję profilu uruchamiania environmentVariables w pliku launchSettings.json:
    • Sprawdź, czy ASPNETCORE_ENVIRONMENT ustawiono wartość "Development".

    • Ustaw wartość opcji ASPNETCORE_HOSTINGSTARTUPASSEMBLIES na "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation". Na przykład następujące launchSettings.json funkcje umożliwiają kompilację środowiska uruchomieniowego dla profilów uruchamiania ViewCompilationSample i IIS 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:

  1. Włącz kompilację środowiska uruchomieniowego z instrukcjami w temacie Włączanie kompilacji środowiska uruchomieniowego warunkowo.

  2. 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. PhysicalFileProvider Na 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 Kompilacji

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:

  1. Wybierz szablon projektu Aplikacja internetowa lub Aplikacja internetowa (Model-View-Controller).
  2. 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:

  1. Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.

  2. Zaktualizuj metodę projektu Startup.ConfigureServices , aby uwzględnić wywołanie metody AddRazorRuntimeCompilation. 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ę środowiska uruchomieniowego tylko w środowisku programistycznym:

  1. Zainstaluj plik Microsoft.AspNetCore.Mvc.Razor. RuntimeCompilation pakiet NuGet.
  2. Zmodyfikuj sekcję profilu environmentVariables uruchamiania w pliku launchSettings.json:
    • Sprawdź, czy ASPNETCORE_ENVIRONMENT ustawiono wartość "Development".
    • Ustaw wartość opcji ASPNETCORE_HOSTINGSTARTUPASSEMBLIES na "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation".

W poniższym przykładzie kompilacja środowiska uruchomieniowego jest włączona w środowisku programistycznym 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:

  1. Włącz kompilację środowiska uruchomieniowego z instrukcjami w temacie Warunkowe włączanie kompilacji środowiska uruchomieniowego w istniejącym projekcie.

  2. 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. PhysicalFileProvider Na 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