Compilation de fichiers Razor dans ASP.NET CoreRazor file compilation in ASP.NET Core

Par Rick AndersonBy Rick Anderson

Un fichier Razor est compilé au moment de l’exécution, quand la vue MVC associée est appelée.A Razor file is compiled at runtime, when the associated MVC view is invoked. La publication de fichiers Razor au moment de la génération n’est pas prise en charge.Build-time Razor file publishing is unsupported. Vous pouvez éventuellement compiler les fichiers Razor au moment de la publication et les déployer avec l’application—en utilisant l’outil de précompilation.Razor files can optionally be compiled at publish time and deployed with the app—using the precompilation tool.

Un fichier Razor est compilé au moment de l’exécution, quand la vue MVC ou la page Razor associée est appelée.A Razor file is compiled at runtime, when the associated Razor Page or MVC view is invoked. La publication de fichiers Razor au moment de la génération n’est pas prise en charge.Build-time Razor file publishing is unsupported. Vous pouvez éventuellement compiler les fichiers Razor au moment de la publication et les déployer avec l’application—en utilisant l’outil de précompilation.Razor files can optionally be compiled at publish time and deployed with the app—using the precompilation tool.

Un fichier Razor est compilé au moment de l’exécution, quand la vue MVC ou la page Razor associée est appelée.A Razor file is compiled at runtime, when the associated Razor Page or MVC view is invoked. Les fichiers Razor sont compilés au moment de la génération et de la publication à l’aide du kit SDK Razor.Razor files are compiled at both build and publish time using the Razor SDK.

Considérations relatives à la précompilationPrecompilation considerations

Les effets secondaires de la précompilation des fichiers Razor sont les suivants :The following are side effects of precompiling Razor files:

  • Un plus petit bundle publiéA smaller published bundle
  • Un temps de démarrage plus courtA faster startup time
  • Vous ne pouvez pas modifier les fichiers Razor—le contenu associé est absent du bundle publié.You can't edit Razor files—the associated content is absent from the published bundle.

Déployer les fichiers précompilésDeploy precompiled files

La compilation au moment de la génération et de la publication des fichiers Razor est activée par défaut par le kit SDK Razor.Build- and publish-time compilation of Razor files is enabled by default by the Razor SDK. La modification des fichiers Razor une fois que ceux-ci sont mis à jour est prise en charge au moment de la génération.Editing Razor files after they're updated is supported at build time. Par défaut, seul le fichier Views.dll compilé est déployé avec votre application. Aucun fichier .cshtml n’est déployé.By default, only the compiled Views.dll and no .cshtml files are deployed with your app.

Important

L’outil de précompilation sera supprimé dans ASP.NET Core 3.0.The precompilation tool will be removed in ASP.NET Core 3.0. Nous vous recommandons de migrer vers le SDK Razor.We recommend migrating to Razor Sdk.

Le kit SDK Razor est actif seulement si aucune propriété spécifique à la précompilation n’est définie dans le fichier projet.The Razor SDK is effective only when no precompilation-specific properties are set in the project file. Par exemple, la définition de la propriété MvcRazorCompileOnPublish du fichier .csproj sur la valeur true désactive le kit SDK Razor.For instance, setting the .csproj file's MvcRazorCompileOnPublish property to true disables the Razor SDK.

Si votre projet cible le .NET Framework, installez le package NuGet Microsoft.AspNetCore.Mvc.Razor.ViewCompilation :If your project targets .NET Framework, install the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation NuGet package:

<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation"
                  Version="2.0.4"
                  PrivateAssets="All" />

Si votre projet cible .NET Core, aucune modification n’est nécessaire.If your project targets .NET Core, no changes are necessary.

Les modèles de projet ASP.NET Core 2.x définissent implicitement la propriété MvcRazorCompileOnPublish sur la valeur true par défaut.The ASP.NET Core 2.x project templates implicitly set the MvcRazorCompileOnPublish property to true by default. Par conséquent, cet élément peut être supprimé sans problème du fichier .csproj.Consequently, this element can be safely removed from the .csproj file.

Important

L’outil de précompilation sera supprimé dans ASP.NET Core 3.0.The precompilation tool will be removed in ASP.NET Core 3.0. Nous vous recommandons de migrer vers le SDK Razor.We recommend migrating to Razor Sdk.

La précompilation de fichiers Razor n’est pas disponible quand vous effectuez un déploiement autonome (SCD) dans ASP.NET Core 2.0.Razor file precompilation is unavailable when performing a self-contained deployment (SCD) in ASP.NET Core 2.0.

Définissez la propriété MvcRazorCompileOnPublish sur la valeur true, puis installez le package NuGet Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Set the MvcRazorCompileOnPublish property to true, and install the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation NuGet package. Le fichier .csproj suivant en est un exemple, avec en surbrillance ces paramètres :The following .csproj sample highlights these settings:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-*" />
  </ItemGroup>
</Project>

Préparer l’application pour un déploiement dépendant de l’infrastructure avec la commande de publication .NET Core CLI.Prepare the app for a framework-dependent deployment with the .NET Core CLI publish command. Par exemple, exécutez la commande suivante à la racine du projet :For example, execute the following command at the project root:

dotnet publish -c Release

Un fichier <nom_projet>.PrecompiledViews.dll, contenant les fichiers Razor compilés, est généré lorsque la précompilation réussit.A <project_name>.PrecompiledViews.dll file, containing the compiled Razor files, is produced when precompilation succeeds. Par exemple, la capture d’écran ci-dessous illustre le contenu du fichier Index.cshtml à l’intérieur de WebApplication1.PrecompiledViews.dll:For example, the screenshot below depicts the contents of Index.cshtml within WebApplication1.PrecompiledViews.dll:

Vues Razor dans la DLL

Ressources supplémentairesAdditional resources