【发布时间】:2021-03-31 03:17:55
【问题描述】:
我需要为 MSBuild“发布”的发布任务中的根文件/文件夹指定什么?
.NET 版本基本上是二进制文件吗?因为对于 AngularOutput 构建,我必须指定 AngularOutput 的路径,但对于 .NET Release,我不确定那会是什么路径,我认为它是整个项目,这意味着......它的二进制文件?
预期的工件:
更新: 根据 Kevin 的 YAML 生成的工件:
在 _PublishedWebsites 内
在更新 3 之后,在 windows 代理上运行时:
更新#4:使用 VSBuild
steps:
- task: VSBuild@1
displayName: '.Net build | Build solution'
inputs:
solution: 'Project123/*.csproj'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: AnyCPU
configuration: Release
msbuildArchitecture: x64
结果一样,放在长路径中:
update#5:改用 /p:PublishProfile=Project123.pubxml MSBuild arg,并在 Windows 代理上运行,构建完成得很好,但这次我收到了发布任务的警告:
##[警告]目录 'D:\a\1\a' 为空。不会添加任何内容来构建工件“发布”。
我尝试将 /p:OutputPath=$(build.artifactstagingdirectory) 添加到 MSBuild args 以及发布配置文件 arg 中,结果与我之前发布的相同:
备注:
实际上我们还需要/p:DeployOnBuild=true吗?我知道这是部署,但我认为我们不希望或不应该在管道中部署,因为我们有一个专门用于将已发布的工件部署到应用服务的版本。
【问题讨论】:
-
嗨@Cataster。根据我的测试,输出内容与 msbuild 参数有关。请参考我的更新 3 并检查它是否可以进行一些更改
-
@KevinLu-MSFT 我用 update3 yaml 更新了管道,所以我禁用了存档,按照建议添加了 MSBuild 参数,并修改了 pathToPublish
$(build.ArtifactStagingDirectory)/$(Build.BuildId).zip->$(build.ArtifactStagingDirectory)。然而,这一次并没有产生任何神器。收到以下警告:##[warning]Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'Release'. -
@KevinLu-MSFT 我在 windows 代理上对其进行了测试,看起来它确实产生了与 linux 代理不同的东西,但是路径很长。内容并不完全位于根目录。这可能就是为什么在 linux 代理中,根据我上面的评论,它无法找到我认为的任何内容。所以即使在 Windows 上,它也与预期的工件不完全匹配
-
您能否尝试使用 VS Build 任务在 Microsoft 托管代理上运行相同的参数?另一方面,根据我们之前的讨论,您可以将
/p:DeployOnBuild=true /p:PublishProfile=xxxx添加到构建参数以使用发布配置文件。请检查它是否可以进行一些更改 -
@KevinLu-MSFT 请查看我的更新 4 和 5
标签: azure-devops azure-pipelines-build-task azure-devops-pipelines