Ответ 1
Текущая система сборки RC2, похоже, полностью игнорирует папку Compiler/Preprocess
- вы можете буквально поместить что-нибудь в нее, и она не создаст ошибок сборки. До тех пор, пока Roslyn не будет подключен к резервной копии, чтобы сделать предварительную компиляцию, я не думаю, что в настоящее время возможно проверить файлы .cshtml на этапе сборки.
Единственное обходное решение, которое я нашел, - это заставить Visual Studio открывать каждый файл .cshtml в проекте, используя некоторые грязные тонкие/заменяющие трюки, и чтобы механизм Intellisense проверял код бритвы.
Обновление
Глядя на зафиксировать, что удаленная предварительная компиляция бритвы, кажется, что весь сам RazorPreCompileModule
был удален, а не вернется в течение некоторого времени. Даже если этот код был добавлен обратно в ваш проект вручную, не похоже, что сборка в dotnet будет запускать любые компилируемые модули.
Обновление 2
Просмотр компиляции вернётся в ASP.NET Core 1.1!
Чтобы включить его, добавьте следующее в раздел "зависимости" project.json:
"dependencies": {
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final"
}
и следующее в раздел "Инструменты":
"tools": {
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": "1.1.0-preview4-final"
}
и в разделе "scripts" добавьте команду "precpile" для брандмауэра "postpublish":
"scripts": {
"postpublish": [
"dotnet razor-precompile -configuration %publish:Configuration% -framework %publish:TargetFramework% -output-path %publish:OutputPath% %publish:ProjectPath%"
]
}
Обновление 3 - csproj
Наконец, мы перешли на VS2017 и выполнили переход проекта в csproj. Это, конечно, сломало предварительную компиляцию бритвы, и мальчик был кроличьей дырой, чтобы понять, как ее исправить - официальные инструкции здесь.
Первая икота, которую вы, вероятно, ударите, - это автоматическое прохождение миграции xproj/project.json → csproj. Автоматическая миграция завершится неудачно, если в вашем project.json
есть раздел postpublish
script, поэтому продолжайте и полностью удалите этот раздел, прежде чем выполнять миграцию.
Как оказалось, вы все равно можете запускать сценарии публикации публикации, добавив <Target Name="PostPublishTarget" AfterTargets="Publish">...</Target>
к вашему .csproj
, но в любом случае это не нужно для предварительной компиляции бритвы. Поэтому без дальнейших церемоний, как включить предварительную компиляцию бритвы на территории VS2017/csproj, как только вы перенесли свой проект:
-
Добавьте ссылку на пакет компиляции с точным представлением на ваш csproj. В
<ItemGroup>
, содержащем все тэги проекта<PackageReference>
, добавьте:<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.0" />
-
Добавьте свойство MvcRazorCompileOnPublish в ваш csproj. В разделе
<PropertyGroup>
, содержащем ваш проект<VersionPrefix>
,<TargetFramework>
и т.д., Добавьте:<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
И все готово. Теперь система сборки будет запускать предварительную компиляцию бритвы каждый раз, когда проект будет опубликован. Вы должны увидеть что-то вроде Razor view compilation for myApp -> obj\Release\netcoreapp1.1\myApp.PrecompiledViews.dll
в своем выпуске сборки при публикации.