【发布时间】:2021-03-24 17:24:48
【问题描述】:
我正在尝试使用 GitHub 操作和 Azure 构建和部署 ASP.NET Web 应用程序。
我已经使用 VS2017 成功创建并发布到 Azure 一个小应用程序 (.NET 4.8)。
现在我正在尝试设置自动部署,并且我正在使用设置部署时从 Azure 获得的基本 GitHub 操作工作流。
运行操作时出现此错误:
D:\a\pathtomyproject\myprojectname.csproj : error MSB4057: The target "pipelinePreDeployCopyAllFilesToOneFolder" does not exist in the project.
这是完整的操作:
name: Build and deploy ASP app to Azure Web App
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: 'windows-latest'
steps:
- uses: actions/checkout@master
- name: Setup MSBuild path
uses: microsoft/setup-msbuild@v1.0.2
- name: Setup NuGet
uses: NuGet/setup-nuget@v1.0.5
- name: Restore NuGet packages
run: nuget restore
- name: Publish to folder
run: msbuild /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="\published\"
- name: Deploy to Azure Web App
uses: azure/webapps-deploy@v2
with:
app-name: 'myname'
slot-name: 'production'
publish-profile: ${{ ... }}
package: \published\
具体来说,错误发生在“发布到文件夹”步骤中。
【问题讨论】:
-
我使用了一组不同的 MSBuild 参数。
/p:SkipInvalidConfigurations=true /p:DeployOnbuild=True /p:GenerateProjectSpecificOutputFolder=true /p:GenerateBuildInfoConfigFile=false /p:OutDir=$(Build.BinariesDirectory) /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false /p:langversion=latest执行文件系统发布到 $(Build.BinariesDirectory) 目录(您需要用 GitHub Actions 使用的任何语法替换它)。 -
@GuiFalourd 刚刚仔细检查了我的解决方案和文件系统文件夹结构匹配。我认为我的解决方案构建良好,但发布失败。虽然我确实有嵌套结构,例如 /src/projectA 和 src/projectB
-
@mason 感谢您的链接,不幸的是它没有帮助。我尝试在本地运行 MSBuild,并确认它可以毫无问题地构建和发布解决方案。似乎 Azure/Kudu adds an additional 步骤将构建结果放入临时文件夹中。
标签: asp.net azure github-actions