Hier, j'ai mis à jour le net core 2.1.
Maintenant, si je débogue, les vues sont précompilées, ce qui prend bien sûr beaucoup de temps au démarrage ... Est-il possible de revenir au comportement précédent, où les vues sont compilées juste à temps, si cela est nécessaire?
Je n'ai aucune référence liée à la précompilation dans mon csproj. Est-ce quelque chose qui vient du méta-paquet?
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="11.1.0" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" PrivateAssets="All" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="2.5.0" />
<!--<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.0" PrivateAssets="All" />-->
</ItemGroup>
Cela peut être accompli en utilisant la propriété RazorCompileOnBuild
dans le fichier csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>true</RazorCompileOnPublish>
</PropertyGroup>
De cette façon, les fichiers Razor ne sont précompilés que lors de la publication.
En fonction du cas d'utilisation, vous souhaitez également le configurer en fonction de la configuration de construction:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>true</RazorCompileOnPublish>
</PropertyGroup>
Un grand merci à Mark G me pointant dans la bonne direction.
Vous devez définir MvcRazorCompileOnPublish sur false, cela désactivera toutes les fonctions de compilation de vues qui sont activées dans le cadre de la publication.
<PropertyGroup>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
Vous pouvez jouer avec la propriété de projet MvcRazorFilesToCompile
MvcRazorFilesToCompile: groupe d'éléments qui spécifie les fichiers de vue à compiler. Par défaut, cela inclut tous les fichiers .cshtml marqués comme contenu.
Remarque: n'utilisez pas la chaîne vide, car c'est la même chose que par défaut ( from repo ):
<ItemGroup Condition="'@(MvcRazorFilesToCompile)' == ''">
<MvcRazorFilesToCompile Include="@(Content)" Condition="'%(Extension)'=='.cshtml'" />
</ItemGroup>