Sta*_*ams 14 asp.net-core-mvc asp.net-core
在<MVC6中,我可以在发布时预编译.cshtml文件,这样在请求时不必在第一次打击时编译它们.
是否可以在MVC6中预编译.cshtml文件?
Muh*_*eed 21
添加引用Microsoft.AspNetCore.Mvc.Razor.ViewCompilation:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
发布项目时打开剃刀视图编译.
<PropertyGroup>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此 GitHub问题.
Razor预编译在ASP.NET Core 1.0 MVC 6 RC2中被删除,但是使用了一个工具可以在ASP.NET Core 1.1中恢复,你可以这样添加:
Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design在如下的dependencies部分下添加引用:
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": {
"type": "build",
"version": "1.1.0-preview4-final"
}
Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools在如下的tools部分下添加引用:"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%"
}
dev*_*ric 12
Visual Studio 2017的答案:
从Visual Studio解决方案资源管理器中编辑项目的.csproj,并添加MvcRazorCompileOnPublish和PreserveCompilationContext与真实值的属性,如果没有已存在,
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
....
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
Microsoft.AspNetCore.Mvc.Razor.ViewCompilation通过nuget或编辑.csproj 将包添加到项目中
<ItemGroup>
...
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
**以下答案仅适用于ASP.NET Core RC1.**
您可以创建一个继承自RazorPreCompileModule并重写该EnablePreCompilation方法的类,将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;
}
}
Run Code Online (Sandbox Code Playgroud)
在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();
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看一下预编译例子项目整个项目的asp.net GitHub的页面上.
您也可以在发布时编译整个应用程序.
这将发布编译为nuget包的整个应用程序.
| 归档时间: |
|
| 查看次数: |
4815 次 |
| 最近记录: |