Поддерживает ли MVC6 Precompiled Views?
В < MVC6 Я мог бы иметь .cshtml файлы, предварительно скомпилированные в публикации, так что их не нужно было компилировать при первом попадании по запросу.
Возможно ли прекомпилировать файлы .cshtml в MVC6?
Ответы
Ответ 1
Ответ для Visual Studio 2017:
Отредактируйте проект .csproj из Visual Studio Solution Explorer и добавьте свойства MvcRazorCompileOnPublish
и PreserveCompilationContext
со значением true, если он еще не существует
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
....
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
Добавьте пакет Microsoft.AspNetCore.Mvc.Razor.ViewCompilation
в свой проект через nuget или отредактируйте файл .csproj
<ItemGroup>
...
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />
</ItemGroup>
** Следующий ответ применим только к ASP.NET Core RC1. **
Вы можете создать класс, который наследует от RazorPreCompileModule
и переопределить метод EnablePreCompilation
, чтобы установить предварительную компиляцию бритвы как истину.
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();
}
}
Вы можете посмотреть пример предварительной компиляции project на странице gitub asp.net для всего проекта.
Вы также можете скомпилировать все свое приложение при его публикации.
![введите описание изображения здесь]()
который опубликует все приложение, скомпилированное как пакет nuget.
Ответ 2
csproj (VS 2017) Ответ
Добавьте ссылку на Microsoft.AspNetCore.Mvc.Razor.ViewCompilation
:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0-msbuild3-update1" PrivateAssets="All" />
</ItemGroup>
Включите компиляцию вида бритвы после публикации проекта.
<PropertyGroup>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>
Подробнее см. this GitHub.
xproj и project.json(VS 2015) Ответ
Предварительная компиляция 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",
- Добавить postpublish script для вызова компилятора вида:
"scripts": {
"postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
}
Ответ 3
Наконец, предварительная компиляция представления Razor поддерживается как ASP.NET Core 1.1.
Вот объявление: Объявление самого быстрого ASP.NET, однако, RTM версии .NET 1.1.NET
Он сказал:
Синтаксис Razor для представлений обеспечивает гибкий опыт разработки где компиляция представлений происходит автоматически во время выполнения, когда представление выполнено. Однако есть некоторые сценарии, которые вы делаете не хотите, чтобы синтаксис Razor был скомпилирован во время выполнения. Теперь вы можете скомпилировать Razor видит, что ваше приложение ссылается и развертывает их с помощью вашего выражение. Чтобы включить компиляцию в качестве части публикации ваших приложение,
- Добавить ссылку на "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design" под раздел "зависимости".
- Добавить ссылку на "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools" под инструментами раздел
- Добавить postpublish script для вызова компилятора вида:
"scripts": {
"postpublish": "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%"
}