使用Powershell将ASP.NET 5 MVC 6应用程序发布到Azure Web应用程序时,似乎发布的文件夹结构某种程度上是不正确的。
发布后,wwwroot
是一个太深的文件夹:
如果我将应用程序的虚拟目录从site\wwwroot
更改为site\wwwroot\wwwroot
,那么它将起作用!
首先,我使用MSBuild进行构建和文件发布:
/t:Build,FileSystemPublish /p:PublishConfiguration=$(BuildConfiguration) /p:PublishOutputPathNoTrailingSlash=$(build.stagingDirectory)
第二个,使用此脚本发布到Azure Web App,并传递
$(build.stagingDirectory)
作为$packOutput
:param([String] [Parameter(Mandatory = $true)]$websiteName, [String] [Parameter(Mandatory = $true)]$packOutput)
$SourceFolder = "$packOutput"
[IO.DirectoryInfo] $parentDir = [System.IO.Path]::GetDirectoryName($packOutput)
$DestinationFile = "$parentDir\Publish.zip"
$Compression = "Optimal" # Optimal, Fastest, NoCompression
function Zip-Directory {
Param(
[Parameter(Mandatory=$True)][string]$DestinationFileName,
[Parameter(Mandatory=$True)][string]$SourceDirectory = "",
[Parameter(Mandatory=$False)][string]$CompressionLevel = "Optimal",
[Parameter(Mandatory=$False)][switch]$IncludeParentDir
)
Add-Type -AssemblyName System.IO.Compression.FileSystem
$CompressionLevel = [System.IO.Compression.CompressionLevel]::$CompressionLevel
[System.IO.Compression.ZipFile]::CreateFromDirectory($SourceDirectory, $DestinationFileName, $CompressionLevel, $IncludeParentDir)
}
Zip-Directory -DestinationFileName $DestinationFile `
-SourceDirectory $SourceFolder `
-CompressionLevel $Compression ` #Optional parameter
Move-Item -Path $DestinationFile -Destination $SourceFolder\Publish.zip
Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName
Write-Output "Publishing web app..."
Publish-AzureWebsiteProject -Name $websiteName -Package $SourceFolder\Publish.zip
Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName
我似乎看不出哪里出了问题。
编辑:使用DNX beta6
最佳答案
问题是您的 Publish.zip 文件夹将包含两个子文件夹。如果您使用.NET 5随附的新dnu publish
命令,情况也会如此。
approot
wwwroot
Publish-AzureWebsiteProject
将 Publish.zip 的内容发布到Azure Web App的site/wwwroot
中。您需要的是一种发布方法,该方法不会发布到site/wwwroot
,而是发布到/site
,以便您在Azure Web App中以以下目录结构结尾。D:\
home
site
approot
wwwroot
一种替代方法是使用Git或FTP而不是
Publish-AzureWebsiteProject
推送到Azure Web App。两者都可以为您提供所需的控制,并且您可以在PowerShell中使用它们。如果您选择了Git路由,尽管它可以直接使用,但也请 checkout Project Kudu。关于powershell - ASP.NET 5 MVC 6:Publish-AzureWebsiteProject不正确的目录结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32613513/