Megosztás a következőn keresztül:


Razor fájlösszeállítás az ASP.NET Core-ban

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:

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:

  1. Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.

  2. HívásAddRazorRuntimeCompilation:Program.cs

    var 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:

  1. Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.

  2. Hívás AddRazorRuntimeCompilation a Program.cs alatt, 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:

  1. Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
  2. Az indítási profil environmentVariables részének módosítása a launchSettings.json-ben:
    • Ellenőrizze, hogy ASPNETCORE_ENVIRONMENT"Development"van-e beállítva.

    • Állítsa a ASPNETCORE_HOSTINGSTARTUPASSEMBLIES elemet "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" értékre. Például a következő launchSettings.json lehetővé teszi a futtatókörnyezet összeállítását a ViewCompilationSample és IIS Express indí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:

  1. 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.

  2. 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 PhysicalFileProvider példányt egy fájlszolgáltatói gyűjteményhez, amely lehetővé teszi az RCL .cshtml fá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:

  1. Válassza ki a webalkalmazást vagy a webalkalmazás (Model-View-Controller) projektsablont.
  2. 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:

  1. Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.

  2. Frissítse a projekt Startup.ConfigureServices metó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:

  1. Telepítse a Microsoft.AspNetCore.Mvc.Razor RuntimeCompilation NuGet-csomag.
  2. Az indítási profil environmentVariables szakaszának módosítása a következőben launchSettings.json:
    • Ellenőrizze, hogy ASPNETCORE_ENVIRONMENT be van-e állítva "Development".
    • Állítsa a ASPNETCORE_HOSTINGSTARTUPASSEMBLIES elemet "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" értékre.

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:

  1. 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.

  2. A Startup.ConfigureServices alatt 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 PhysicalFileProvider példányt egy fájlszolgáltatói gyűjteményhez, amely lehetővé teszi az RCL .cshtml fájljainak elérését.

További erőforrások