使用asp.net核心发布视图

时间:2017-09-16 16:22:27

标签: asp.net-core

在asp.net core 2.0项目中,我想强制发布Views,因为我在运行时需要它们。 有线索吗?

3 个答案:

答案 0 :(得分:24)

编辑your.csproj文件并将PreserveCompilationContext添加为true,将MvcRazorCompileOnPublish添加为false

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

然后视图将包含在发布

编辑:从版本2.1开始,无法使用Razor Class Libraries,而不是嵌入视图,而是可以预先编译它们。 Web应用程序中的本地视图仍可覆盖类库中的视图。在新方案中,您将删除PreserveCompilationContext和MvcRazorCompileOnPublish设置,并使用默认值。这样,应用程序中的所有视图都将被预编译,并且发布输出中不会包含.cshtml文件。

答案 1 :(得分:3)

乔的答案是针对.Net Core 2的。

在.Net Core 3中,如果您使用的是Startup.cs中的默认服务。AddControllersWithViews(),则需要使用RazorCompileOnPublish。

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
  </PropertyGroup>

此外,如果需要在Core 3中启用Razor运行时编译,则需要安装“ Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation”包,然后添加AddRazorRuntimeCompilation。

services.AddControllersWithViews()
        .AddRazorRuntimeCompilation();

答案 2 :(得分:0)

并且您还需要在发布站点之前安装“用于 IIS 的 .Net Core 托管包”。