Asp.net core MVC6是否支持预编译视图?
在Asp.net core MVC6是否支持预编译视图?,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,在
是否可以在MVC6中预编译.cshtml文件?Visual Studio 2017的答案: 从Visual Studio解决方案资源管理器编辑您的project.csproj,并添加
MvcRazorCompileOnPublish
和PreserveComilationContext
属性,如果该属性尚未存在,则将其值设置为true
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
....
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
**以下答案仅适用于ASP.NET Core RC1** 您可以创建一个继承自
RazorPreCompileModule
的类,并重写enableprocomplation
方法以将razor预编译设置为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页面上查看整个项目的预编译示例
您也可以在发布应用程序时编译整个应用程序
它将把整个应用程序编译成一个nuget软件包发布。csproj(VS 2017)答案
添加对Microsoft.AspNetCore.Mvc.Razor.viewcomilation的引用:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>
Tools
部分下添加对Microsoft.AspNetCore.Mvc.Razor.viewcomilation.Tools
的引用,如下所示:最后,从ASP.NET Core 1.1开始支持Razor视图预编译 公告如下: 它说: 视图的Razor语法提供了灵活的开发体验 其中,当 视图被执行。但是,在某些情况下,您可以这样做 不希望在运行时编译Razor语法。现在可以编译 Razor查看应用程序引用的视图,并使用 应用在发布过程中启用视图编译的步骤 申请书
我现在尝试使用一个新的ASP.NET 5 MVC 6应用程序,目标是DNX Core 5.0,我得到的错误是
GetType().GetTypeInfo()
不存在,但也GetType().Assembly
也失败了(但编辑器可以工作-显然,Assembly
属性不在DNX Core中)。只有一些链接:,以及一条解释这一点的注释。
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": {
"type": "build",
"version": "1.1.0-preview4-final"
}
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final",
"scripts": {
"postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
}
"scripts": {
"postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
}