我在 TeamCity 工件配置中使用通配符语法进行了一场小闹剧。我想从任何文件夹中获取与模式 myproject.*.dll 匹配的每个文件,并将每个 DLL 放在工件路径的根目录中。
这是我目前所拥有的:
**/obj/Debug/myproject.*.dll => /
这是抓取所有 DLL,但将它们放在与源相同的文件夹结构中,而不是在工件中以“myproject.web.dll”结束,我得到“Web/obj/debug/myproject.web.dll”。
我在这里想念什么?
我在 TeamCity 工件配置中使用通配符语法进行了一场小闹剧。我想从任何文件夹中获取与模式 myproject.*.dll 匹配的每个文件,并将每个 DLL 放在工件路径的根目录中。
这是我目前所拥有的:
**/obj/Debug/myproject.*.dll => /
这是抓取所有 DLL,但将它们放在与源相同的文件夹结构中,而不是在工件中以“myproject.web.dll”结束,我得到“Web/obj/debug/myproject.web.dll”。
我在这里想念什么?
恐怕你不能以简单的方式做到这一点。您应该在本地将 *.dll 收集到一个地方,然后使用 TeamCity 的工件规则将它们全部复制到根目录。
或者,您可以手动输入所有路径(不带 ** 部分)
这就是它在 TC 中的工作方式。
我不确定您是否可以在不复制结构的情况下使用工件根目录。文档指定
如果省略目标目录,则文件将发布在构建工件的根目录中。
你不能只使用指定的文件夹名称说 dist,这会导致问题吗?如果有,它们是什么!
例如
**/obj/Debug/myproject.*.dll => dist
更新 - 在文档中找到更多信息
文件将被发布,保留通配符匹配的目录结构(不会创建与“静态”文本匹配的目录)。也就是说,TeamCity 将从模式中第一次出现通配符开始创建目录。
因此,如果你可以更明确,它可能会导致更扁平的结构。