Build 团队城市文物;排除单个文件

Build 团队城市文物;排除单个文件,build,continuous-integration,teamcity,Build,Continuous Integration,Teamcity,我有一个TeamCity构建配置,其中包括以下用于发布工件的配置: Source\Builder\bin\Release\*.dll=>release 这工作得很好,但是我想排除一个dll(有很多),并且读到您可以使用+&-运算符来完成这项工作。大致如下: +: Source\Builder\bin\Release\*.dll=>release -: Source\Builder\bin\Release\Builder.* 一旦我添加了这些,就不会发布任何工件,并且我在构建日志中

我有一个TeamCity构建配置,其中包括以下用于发布工件的配置:

Source\Builder\bin\Release\*.dll=>release
这工作得很好,但是我想排除一个dll(有很多),并且读到您可以使用+&-运算符来完成这项工作。大致如下:

+: Source\Builder\bin\Release\*.dll=>release
-: Source\Builder\bin\Release\Builder.*
一旦我添加了这些,就不会发布任何工件,并且我在构建日志中得到以下错误(看起来它将+作为路径的一部分计算):

我使用的是7.1.1版,任何人都有任何想法(我不确定这些操作符是否有效)。我已经看到了一个使用MSBuild的解决方案,但是很惊讶这个功能不可用


提前谢谢。

我相信你做不到

但是,如果您将另一个构建配置中的工件用作工件依赖项,则可以在其中排除特定文件

设置依赖项时,可以指定负运算符,如下所示:

+:release/**=>Dependencies/SomeProject
-:release/SomeBinary.dll

这是一个可怕的黑客攻击,但让它工作的一种方法是建立一个新的构建配置,该配置将依赖项作为工件依赖项获取,不包括一个二进制文件,然后发布它自己的工件

如中所示,创建新的生成配置并发布:

Dependencies/SomeProject=>release

然后引用此构建配置中的工件,而不是另一个。

我们当前的选项是在 然后返回到解决方法

问题提示相同的目标文件夹可以用于多个路径模式

还声明

TeamCity将从第一次出现 模式中的通配符

所以在很多情况下,可以将排斥问题反求为多重包含

例如,我没有隐藏如何从我的模板中排除
-:**/.svn
,而是通过扩展来过滤它们:

templates/**/*.vm => templates
templates/**/*.xsl => templates

派对有点晚了,但仍然没有解决办法

最后,我在项目中添加了最后一个构建步骤。它是命令行>自定义脚本。然后,我使用这些命令删除工件中不需要的文件。这将在工件收集之前运行

del /S /Q "src\apps\*.xml" 
del /S /Q "src\apps\*.pdb"
命令说明


+我遇到了同样的问题。您是将人工制品发布到TeamCity的其他地方作为人工制品依赖项使用,还是因为您想在TC外部使用二进制文件?我真的想将人工制品作为外部使用的可下载版本使用。啊,这可能是我读到这篇文章时感到困惑的地方(只是TC的新手,从CruiseControl迁移过来)。这是一个可怕的黑客攻击,但让它工作的一种方法是设置一个新的构建配置,该配置将依赖项作为人工制品依赖项获取,不包括一个二进制文件,然后发布自己的人工制品。想想看,这是针对我的CI构建的。我想我可以复制那里的所有东西,并有一个新的发布配置,只需要它需要的东西。似乎我们只是有相同的想法!不太理想,但我想现在就必须这样了。感谢已在TeamCity 10中修复感谢@oleksii!这为我指明了正确的方向。我需要有三个单独的配置文件,需要根据环境(dev、qa和stage)进行部署。我已将自定义脚本配置为先删除默认配置,然后通过将例如web.dev.config重命名为web.config,将其替换为特定的环境配置。
del /S /Q "src\apps\*.xml" 
del /S /Q "src\apps\*.pdb"
/S  Delete from all Subfolders (DELTREE)
/Q  Quiet mode, do not give a Yes/No Prompt before deleting
 *  Match any characters