如何使用预编译视图对非便携式目标进行dotnet发布?

时间:2017-12-06 12:46:31

标签: build asp.net-core-mvc .net-core asp.net-core-2.0

我有这个脚本:

# 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构建)来预编译视图?

1 个答案:

答案 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