Azure devops 如何在VSTS构建过程中创建zip之前修改发布工件文件夹$(build.artifactstagingdirectory)?

Azure devops 如何在VSTS构建过程中创建zip之前修改发布工件文件夹$(build.artifactstagingdirectory)?,azure-devops,azure-pipelines-release-pipeline,azure-artifacts,Azure Devops,Azure Pipelines Release Pipeline,Azure Artifacts,我定义了VSTS构建过程,直到发布工件步骤。默认情况下,VSTS代理在发布工件位置(c:\VSTS-agent\U work\1\a)创建5个文件,包括重要的构建文件,即zip文件夹。当我检查zip文件夹时,我发现构建文件所在的路径很长。zip中的文件夹路径- \内容\C\u C\vsts代理\\u工作\1\s\ABCProject\obj\Release\Package\PackageTmp 在查看了_工作文件夹后,我知道zip文件的源是源目录- C:\vsts代理\\u work\1\s\A

我定义了VSTS构建过程,直到发布工件步骤。默认情况下,VSTS代理在发布工件位置(c:\VSTS-agent\U work\1\a)创建5个文件,包括重要的构建文件,即zip文件夹。当我检查zip文件夹时,我发现构建文件所在的路径很长。zip中的文件夹路径-

\内容\C\u C\vsts代理\\u工作\1\s\ABCProject\obj\Release\Package\PackageTmp

在查看了_工作文件夹后,我知道zip文件的源是源目录-

C:\vsts代理\\u work\1\s\ABCProject\obj\Release\Package\PackageTmp

我想要一个文件夹(RDLCReports文件夹)在C:\vsts代理\\u work\1\s\CCM2015MVC\obj\Release\Package\PackageTmp目录中。我使用“复制文件”任务创建了该文件夹。我在发布工件步骤之前做了这个步骤

问题是当发布工件步骤完成时,我并没有在zip文件中得到那个文件夹

下面是VSTS构建过程的快照-

下面是发布工件的位置-

请让我知道如何在zip中添加该文件夹?我还想知道VSTS build考虑将哪个源路径作为zip文件夹?

文件夹(c:\VSTS-agent\u work\1\a)中的内容是在Visual Studio build task步骤中创建的。因此,即使您使用复制文件任务在
C:\vsts agent\\u work\1\s\CCM2015MVC\obj\Release\Package\PackageTmp
中创建了RDLCReports文件夹。它将不会被复制并再次压缩到
c:\vsts-agent\u work\1\a

有一个解决办法来实现这一点。如果要将文件夹结构保留在zip文件中,可以执行以下步骤:

1,您需要添加一个提取文件任务以将文件夹$(build.artifactstagingdirectory)中的zip文件提取到另一个文件夹(例如$(Agent.BuildDirectory)/Temp)

2,添加复制文件任务以在$(Agent.BuildDirectory)/Temp中提取的文件夹内创建RDLCReports文件夹

3、添加存档文件任务以存档文件夹中的文件 $(Agent.BuildDirectory)/Temp创建文件夹RDLCReports的位置

确保取消选中选项在根文件夹名称之前添加存档路径选中替换现有存档

(例如上面的例子。我的测试项目名为AboutSite,zip文件名为AboutSite.zip。文件夹结构为
Content\C\u C\agent\u work\1\s\AboutSite\AboutSite\AboutSite\obj\Release\netcoreapp2.0\PubTmp\Out
。您需要根据项目对路径和文件名进行一些更改。)


对于您的项目,您可以在
C:\vsts agent\\u work\1\s\ABCProject\obj\Release\Package\PackageTmp
中找到与zip文件相同的内容。因此,另一种解决方法是添加复制文件任务并将此路径作为目标
C:\vsts agent\\u work\1\s\ABCProject\obj\Release\Package\PackageTmp
。然后添加“存档文件”任务以存档此文件夹。但是,此解决方法无法保留原始文件结构。

如果您希望文件位于webdeploy包中,请将其作为内容添加到项目中,并在MSBuild文件中将
CopyToPublishDirectory
设置为
true
。您好@SSD您是否尝试了以下解决方案,效果如何?如果有任何问题,请让我知道?嗨@LeviLu MSFT我提到了你的解压和压缩方法,似乎是正确的,但没有尝试。我所做的是-我在发布工件任务之前使用复制文件任务复制了$(build.artifactstagindirectory)位置的RDLC Reports文件夹,所以现在我有了zip包和文件夹。在发布部分(部署过程),我在Azure应用程序服务部署之后添加了FTP上载任务(用于RDLC报告文件夹),并且成功了。