解决方法
Visual Studio 2017的回答:
从Visual Studio解决方案资源管理器编辑您的项目.csproj,并添加MvcRazorCompileOnPublish和PreserveCompilationContext属性,其值为true,如果它不存在
<PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> .... <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> <PreserveCompilationContext>true</PreserveCompilationContext> </PropertyGroup>
通过nuget将包Microsoft.AspNetCore.Mvc.Razor.ViewCompilation添加到您的项目中或编辑.csproj
<ItemGroup> ... <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" /> </ItemGroup>
**以下答案仅适用于ASP.NET Core RC1. **
您可以创建一个继承自RazorPreCompileModule的类,并覆盖EnablePreCompilation方法将剃刀预编译设置为true.
using Microsoft.AspNet.Mvc.Razor.Precompilation; using Microsoft.Dnx.Compilation.CSharp; namespace PrecompilationWebSite { public class RazorPreCompilation : RazorPreCompileModule { protected override bool EnablePreCompilation(BeforeCompileContext context) => true; } }
在Startup.cs中引用这个方法:
public class Startup { // Set up application services public void ConfigureServices(IServiceCollection services) { // Add MVC services to the services container services .AddMvc() .AddPrecompiledRazorViews(GetType().GetTypeInfo().Assembly); } public void Configure(IApplicationBuilder app) { app.UseCultureReplacer(); app.UseMvcWithDefaultRoute(); } }
您可以在整个项目的asp.net github页面上查看预编译示例project.
您也可以在发布时编译整个应用程序.
这将发布编译为nuget包的整个应用程序.