在asp.net core 2.0项目中,我想强制发布Views,因为我在运行时需要它们。 有线索吗?
答案 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 托管包”。