Azure devops 在生成的工件中只包含一组文件夹

Azure devops 在生成的工件中只包含一组文件夹,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我有一个桌面应用程序,其结构如下: 默认模板创建了一个复制文件任务,如下所示: 问题是发布的工件包括所有文件夹中生成的所有二进制文件。我不想那样。我只想包括2个文件夹内的那些 -Deployer.Lumia.Console -Deployer.Lumia.Gui 这是我的解决方案中的两个工具(它们生成.exe文件) 我尝试过创建两个不同的任务,如下所示: 但我一直在犯这样的错误: 这些源代码是从该项目的GitHub获得的 每个项目都在\Source文件夹中。所以我不知道为什么它说找不到

我有一个桌面应用程序,其结构如下:

默认模板创建了一个
复制文件
任务,如下所示:

问题是发布的工件包括所有文件夹中生成的所有二进制文件。我不想那样。我只想包括2个文件夹内的那些 -
Deployer.Lumia.Console
-
Deployer.Lumia.Gui

这是我的解决方案中的两个工具(它们生成.exe文件)

我尝试过创建两个不同的任务,如下所示:

但我一直在犯这样的错误:

这些源代码是从该项目的GitHub获得的

每个项目都在\Source文件夹中。所以我不知道为什么它说找不到


我做错了什么以及如何修复它?

我认为您的脚本应该是:

$(system.defaultworkingdirectory)/**/Deployer.Lumia.Gui/bin/*

这应该可以缩小范围,否则您可以使用自定义脚本任务和类似于
ls-Rd
的内容来发现目录结构并调整路径。

您会遇到关于
。/Deployer.Lumia.Gui/bin/**
的错误,因为源文件夹参数不支持通配符

使用通配符最小匹配模式过滤
内容
编辑框中所需的文件和文件夹

让内容进入舞台 要仅将这两个文件夹的内容放入工件暂存目录下的目录,请设置一个复制任务,如图所示。。。

在阶段中保持内容分开 如果..Gui和..Console目录的内容需要在stage dir中保持独立,那么使用两个独立的复制任务是简单而直接的方法。

编辑2.0 下面是我们的一个包构建的示例 我们正在将
.dll
文件复制到stage dir中的/libraries位置。注意捕获目录结构的内容中的通配符
***\bin\*.dll

然后,我们将该目录作为它自己的工件发布。

此发布任务创建的工件如下所示。。。

但是这个构建也将包作为一个单独的工件发布。

Ouch,我得到了这个:未处理:未找到SourceFolder:D:\a\1\s**\Deployer.Lumia.Gui\bin\release*有趣的是里面有这个文件夹。我已经检查了目录结构,它是“D:\a\1\s\Source\Deployer.Lumia.Gui”。我可以使用两个不同的发布工件任务,使用特殊的“PathtoPublish”来完成我想要的任务吗?如果不能同时使用Console+GUI生成工件,也可以生成两个工件,一个用于Console,另一个用于GUI,但是如何生成呢?如果您使用两个复制任务将bin文件放入工件阶段目录的子目录中,然后,整个stage dir上的一个发布工件任务将在其各自的目录$(build.artifactstagindirectory)/gui&$(build.artifactstagindirectory)/console中包含两组bin文件。这将导致
drop/gui
drop/console
结构与
console+gui
位于同一工件中。听起来像是你想要的。如果您需要两个工件,则可以使用单独的任务分别以stage子目录为目标。Opps,breaked build:我正在处理此问题:找不到SourceFolder:C:\Source\Deployer.Lumia.Gui\bin\release\我已经编辑了源文件夹,删除了前导的“\”,现在可以工作了!是的,很抱歉前面的斜杠。我忘了默认的工作目录变量是否包含它。显然是这样的,前面的斜杠在bash提示符中指向根目录或主目录