Teamcity的构件路径是如何工作的?

28

如果我想创建两个构件dist和source,同时使用sln 2008构建运行程序,并在默认的bin/Release下构建项目,则可以使用build configuration中定义的Artifact paths设置,以下是示例:

**/Source/Code/MyProject/bin/Release/*.* => dist
**/*.* => source

上述代码将生成两个构件,但是在dist目录下会包含整个目录结构(Source/Code/MyProject/bin/Release),而我不想要这个。在source目录下也会出现整个目录结构以及obj和bin/Release,这些我也不需要。

请问应该如何正确完成这个操作?

我是否需要更改正在构建的所有项目的目标位置才能使其正常工作?

2个回答

28

所以你只需要:

Source\Code\MyProject\bin\Release\* => dist
Source\**\* => source

这将把所有的文件放入一个名为dist的构件文件夹中,并把所有源代码放入一个名为source的构件文件夹中。

如果您在Release中有子文件夹,请尝试如下:

Source\Code\MyProject\bin\Release\**\* => dist

3
如果您的路径中有空格,会发生什么?我已经尝试过用引号括起来的路径和使用“\”转义符,但似乎都不起作用... - David Alpert
我该如何在依赖项中使用那个构件文件夹? 例如:B -> A。 我将A的构件路径设置为依赖项,格式为“target-directory** => .” 我将B的构件路径设置为一般设置,格式为“/ => target_directory”。 这样做正确吗? 谢谢。 - Cirelli94
完整路径被带过来的原因是源路径中有一个通配符(即开头的 **)。你需要像这个答案中那样定义完整路径,或者使用参数传递它。 - Richard Ockerby

0
根据TeamCity的文档; 应该是这样的:
file_name|directory_name|Ant-like wildcard [ => target_directory ]

所以...

Source\Code\MyProject\bin\Release|**\* => dist  (| not \)

2
三年后,我猜不会。 - Mendhak
7
“|”表示“其中之一”,或者“或”,因此这意味着“文件名”或“目录名”或“类似蚂蚁的通配符”。不应将管道符号按字面意思处理。 - Erik A. Brandstadmoen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接