在一个asp.net core 2.0项目中,我想强制发布Views,因为我需要它们在运行时使用。有什么提示吗?
在一个asp.net core 2.0项目中,我想强制发布Views,因为我需要它们在运行时使用。有什么提示吗?
编辑你的.csproj文件,添加PreserveCompilationContext为true和MvcRazorCompileOnPublish为false。
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
那么视图将会被包含在发布中。
编辑:从版本2.1开始,无法使用Razor 类库,而是可以预编译视图。Web 应用程序中的本地视图仍然可以覆盖类库中的视图。在新的方案中,您将删除 PreserveCompilationContext 和 MvcRazorCompileOnPublish 设置,并只使用默认值。这样,应用程序中的所有视图都将预编译,发布输出中不会包含任何 .cshtml 文件。
Joe的答案是针对.Net Core 2的。
在.Net Core 3中,如果您在Startup.cs中使用默认的services.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();
同时,在发布网站之前,您还需要安装“为IIS安装.Net Core托管捆绑包”。