我有这个脚本:
# common paths
$buildFolder = (Get-Item -Path "./" -Verbose).FullName
$slnFolder = Join-Path $buildFolder "../"
$outputFolder = Join-Path $buildFolder "build"
$webMvcFolder = Join-Path $slnFolder "ConversioIt.Conmania"
# clear existing folder
Remove-Item $outputFolder -Force -Recurse -ErrorAction Ignore
New-Item -Path $outputFolder -ItemType Directory
# restore nuget
Set-Location $slnFolder
dotnet restore
# publish
Set-Location $webMvcFolder
dotnet publish --output (Join-Path $outputFolder "Portable")
dotnet publish --output (Join-Path $outputFolder "Win") -c Release -r win-x64
dotnet publish --output (Join-Path $outputFolder "Linux") -c Release -r linux-x64
dotnet publish --output (Join-Path $outputFolder "OSX") -c Release -r osx-x64
pause
我的便携式输出(第一个dotnet publish
)确实预先编译了视图。
但是,我的Windows,Linux和OSX版本不会预编译视图。相反,我得到了Area
文件夹,其中包含发布输出中的所有视图。
我还为this answer设置了MvcRazorCompileOnPublish
属性:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>
哪个没有变化。我还使用AspNetCore.All Metapackage(2.0),它应该自动定义预编译所需的一切,如果我理解它是正确的吗?
那么如何进行独立构建(可以在没有.net的情况下运行,例如Linux / Win构建)来预编译视图?
答案 0 :(得分:3)
在ASP.NET Core 2.0中执行self-contained deployment (SCD)时,Razor视图预编译当前不可用。 2.1版本发布时,该功能将适用于SCD。有关详细信息,请参阅View compilation fails when cross-compiling for Linux on Windows。