昨天我更新到net core 2.1。
现在,如果我正在调试,那么预编译的视图,在启动过程中需要很长时间...是否有可能回退到以前的行为,如果需要的话,及时编译视图?
我的csproj中没有与预编译有关的参考。它是来自元包的东西吗?
<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>
答案 0 :(得分:23)
这可以使用csproj文件中的属性RazorCompileOnBuild
来完成:
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>true</RazorCompileOnPublish>
</PropertyGroup>
这样,Razor文件只会在发布时进行预编译。
根据用例,您还需要根据构建配置进行配置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>true</RazorCompileOnPublish>
</PropertyGroup>
非常感谢Mark G指出我正确的方向。
答案 1 :(得分:0)
您应该将MvcRazorCompileOnPublish设置为false,这样,它将关闭作为发布的一部分启用的视图编译的所有功能。
<PropertyGroup>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
答案 2 :(得分:0)
您可以使用MvcRazorFilesToCompile
项目属性
MvcRazorFilesToCompile:指定要编译的视图文件的项目组。默认情况下,这包括标记为内容的所有.cshtml文件。
注意:不要使用空字符串,因为它与默认字符串相同(from repo):
<ItemGroup Condition="'@(MvcRazorFilesToCompile)' == ''">
<MvcRazorFilesToCompile Include="@(Content)" Condition="'%(Extension)'=='.cshtml'" />
</ItemGroup>
答案 3 :(得分:0)
如果您在 .net core 3.1 或 .net core 5.0 上使用 ControllersWithViews,您可以查看以下解决方案:
Disable precompiled views on development when using "AddControllersWithViews()"
答案 4 :(得分:-2)
从Migrate from ASP.NET Core 1.x to 2.0指南,您需要将HKWorkout
设置为false。