如何禁用net core 2.1中的预编译视图进行调试?

时间:2018-06-09 21:03:35

标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.1

昨天我更新到net core 2.1。

现在,如果我正在调试,那么预编译的视图,在启动过程中需要很长时间...是否有可能回退到以前的行为,如果需要的话,及时编译视图?

Output

我的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>

5 个答案:

答案 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。