Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 由于ZIP的结构,使用kudu ZipDeploy的Azure webapp部署失败_.net_Azure_Deployment_Msbuild_Kudu - Fatal编程技术网

.net 由于ZIP的结构,使用kudu ZipDeploy的Azure webapp部署失败

.net 由于ZIP的结构,使用kudu ZipDeploy的Azure webapp部署失败,.net,azure,deployment,msbuild,kudu,.net,Azure,Deployment,Msbuild,Kudu,我正在尝试将.NET Framework站点的部署过程更新为Azure WebApp。我们以前使用的是Publish-AzureWebsiteProjectPowerShell cmdlet,但现在正在逐步淘汰。因此,我们试图通过最近发布的Publish-AzWebAppPowerShell cmdlet使用kudu的zipdeploy功能。将文件放到Azure上,一切都很顺利,但在将ZIP解压缩到正确位置时却失败了 当我在构建服务器上使用“Package”目标构建站点时,它会生成一个用于MSD

我正在尝试将.NET Framework站点的部署过程更新为Azure WebApp。我们以前使用的是
Publish-AzureWebsiteProject
PowerShell cmdlet,但现在正在逐步淘汰。因此,我们试图通过最近发布的
Publish-AzWebApp
PowerShell cmdlet使用kudu的zipdeploy功能。将文件放到Azure上,一切都很顺利,但在将ZIP解压缩到正确位置时却失败了

当我在构建服务器上使用“Package”目标构建站点时,它会生成一个用于MSDeploy的ZIP结构。这不是zipdeploy方法所期望的格式。MSDeploy ZIP文件包含部署XML,实际内容深入嵌套到表示原始位置的路径中。Zipdeploy似乎需要一个简单的网站内容根目录存档,因此它在提取后将文件从存档复制到文本路径中

因此,例如,如果我的Visual Studio解决方案位于
d:\builds\solution
中,则用于打包的生成文件位于
d:\builds\solution\project\obj\debug\Package\PackageTemp
中。该站点的内容进入以下路径下的ZIP文件
D\u C\builds\solution\project\obj\debug\Package\PackageTemp\content
。因此,当zipdeploy运行时,它会将内容放入webapp中,网址为
wwwroot/content/D_C/builds/solution/project/obj/debug/Package/PackageTemp/content/

我正在运行的用于生成项目的命令是:

msbuild.exe /nologo /v:minimal /T:Package /p:Configuration="Debug;VisualStudioVersion=12.0" project.csproj
我希望有人知道我如何通过以下(优先顺序)之一实现这一点:

  • 一个msbuild参数,用于生成站点并创建简单的内容ZIP
  • 一个kudu设置,它将使用msdeploy而不是直接拷贝来部署当前ZIP
  • 自定义kudu部署脚本,将通过msdeploy而不是文件副本进行部署
  • 将创建兼容ZIP的msbuild目标自定义项

我知道您正在尝试在Azure web apps中部署一个web应用程序

下面的URL将帮助您部署Zip

注意:MSBUILD Zip可能无法在所有部署模型中工作

压缩配置
MSBuild.exe/p:configuration=“release”;平台=“任何cpu”;WebPublishMethod=包;PackageFileName=“\MyFolder\package.zip”;DesktopBuildPackageLocation=“\MyFolder\package.zip”;PackageAsSingleFile=true;PackageLocation=“\MyFolder\package.zip”;DeployOnBuild=true;DeployTarget=Package

我意识到这是一篇老文章,但我在使用Powershell来ZipDeployAzure函数时也遇到了这个问题。 在我的例子中,现有的Azure函数已被删除,但新函数未被创建。 我使用压缩存档创建部署包。如果我用7Zip创建包,它就工作得很好。 那是在Powershell v5.1.18362.752上

在Powershell 7.0.3上运行相同的代码效果良好。我还没有试过PowerSHell 6。 以下是代码片段:

$files = Get-ChildItem -Path $path -Exclude $exclude
# check the powershell version because v5.1 has a Compress-Archive that won't deploy to Azure
if($PSVersionTable.PSVersion.Major -lt 7){
    Write-Host -ForegroundColor Red "Incompatible PowerShell version."
    return
}
# compress
Compress-Archive -Path $files -DestinationPath $publish_archive -CompressionLevel Optimal

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", ("Basic {0}" -f $base64AuthInfo))
$headers.Add("Content-Type", "application/zip")

$ret = Invoke-RestMethod -Method Post -Headers $headers -Uri $url -InFile $publish_archive

$publish\u archive是zip文件的完整路径(不是相对路径)

谢谢您的反馈。我已经通读了这个URL,它很有帮助,但没有解决我的特殊问题。不幸的是,事实上,我遇到了此部署方法的ZIP结构问题。您能告诉我您的CI CD管道工具是什么吗?Jenkins 1.5,我们正在使用MSBuild任务和powershell脚本部署包。使用MSBuild任务不要压缩文件,而是使用另一个步骤使用“压缩存档“。请按照。注意:软件包的大小有限制是的,这是我希望使用的一种方法。我遇到的一个问题是,使用上述构建配置生成的工件不会自动应用.config转换。所以我想我需要做的是1)建造;2) 应用转换和/或“部署到目录”;3) 压缩输出;4) 部署到AzureOld,但仍然相关。我们大部分已经切换到Azure DevOps,但仍有一些作业在Jenkins实例上运行。我一定会试试的。