文件内容替换器对工件没有影响

File Content Replacer having no effect on artifacts

我正在使用 TeamCity 的一项相对较新的功能:文件内容替换器。在我当前的设置中,我的 VCS 中有一个 version.js 文件:

window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";

我使用文件内容替换器构建功能将最后一部分替换为:

%build.vcs.number%.%system.build.number%

目前一切顺利!

我有一个相关的构建步骤。这是一个 MSBuild 步骤,但它除了调用 ps1 之外什么都不做,它会做两件相关的事情:

  1. 将所有 js 文件移动到“output”文件夹;
  2. 将所有 js 文件压缩到“zips”文件夹中;

这也是我的两个工件(一个输出文件夹和一个 zip 文件)。

但是,文件内容替换器恢复了它的更改,但这种恢复也反映在工件 nr 1 中,这些文件不受版本控制(即使它们位于我的项目文件夹的子文件夹中)。 zip 文件中的 version.js 文件未还原。

如果我将工件 1 更改为 my/output/folder => all.%build.vcs.number%.zip,则 zip 文件也将包含还原状态而不是我想要的输出。

如何设置 TeamCity 以使工件文件不受此还原的影响?或者我是否需要此构建功能以外的其他功能?

我在 Windows 2012 Server (VM) 上使用 TeamCity 9.1.3 build 37176 运行 和用于评估目的的默认数据库。我正在使用 TFS 2013 作为我的 VCS。

PS。我也问过这个 on the JetBrains forums.

文件内容替换恢复 "Publishing artifacts" 阶段之前的更改。这是"by design"。您可以在构建日志中查看它。但是,您可以在隐藏的工件 .teamcity/JetBrains.FileContentReplacer/.
中找到修改过的文件 如果您想将更改后的文件作为常规工件发布,您应该创建该文件的副本(或 pack/archive 它,就像您已经完成的那样)。此外,除了使用文件内容替换器构建功能,您还可以创建一个脚本来进行所需的更改,这些更改不会被还原。