使用asp.net核心发布视图

Eri*_*ser 9 asp.net-core

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

Joe*_*tte 30

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

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

然后视图将包含在发布中

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


Moh*_*imi 5

Joe 的回答是针对 .Net Core 2 的。

在 .Net Core 3 中,如果您在 Startup.cs 中使用默认 services.AddControllersWithViews() 那么您需要使用 RazorCompileOnPublish。

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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

services.AddControllersWithViews()
        .AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)