TeamCity On-Premises 2025.07 Help

文件内容替换器

File Content Replacer构建功能 ,在构建之前通过执行正则表达式替换来处理文本文件。 构建后,它将文件内容恢复到原始状态。

使用文件内容替换器的常见情况是在特定文件中一次替换一个属性,例如,它可以用于用构建编号修补文件。

如果您希望,您可以添加多个 "File Content Replacer" 构建功能:

  • 替换多个属性

  • 在不同的文件/项目中用不同的值替换同一属性

这个功能扩展了由 AssemblyInfo Patcher 提供的能力。

查看如何 添加构建功能

文件内容替换器设置

您可以手动指定值,也可以使用可以编辑的值预设进行替换。

选项

描述

模板(可选)

文件内容替换器为每个需要替换的属性提供了一个模板。 点击 加载模板 按钮会显示包含替换值预设的模板组合框。 模板可以通过在组合框中输入来根据 语言 (例如, C# )或者 文件 (例如, AssemblyInfo )或者 属性 (例如, AssemblyVersion )进行筛选。 当选择一个模板时,设置会自动填充预设的值。 请参阅下方的 以获取模板详情。 id="Template"

处理文件

点击 编辑文件列表 并指定要搜索替换值的文件路径。 以 +|-:[与签出目录相对的路径] 的形式提供以换行符或逗号分隔的规则集。

类似 Ant 的通配符 是支持的,例如 dir/**/*.cs

如果选择了一个 预定义的模板 ,将使用与该模板关联的文件。

如果没有文件匹配模式,则构建失败

默认启用。 禁用此选项,即使没有文件与指定的模式匹配,也可以防止构建失败。

请注意,如果运行器找到至少一个符合给定模式的文件,即使该文件没有需要替换的内容,此步骤也会被认为是成功的。

文件编码

默认情况下,TeamCity 将自动检测文件编码。 要明确指定编码,您需要从下拉菜单中选择它。 在指定一个 自定义 编码时,请确保它被代理 支持

如果选择了一个 预定义模板 ,将使用与该模板关联的文件编码。

查找内容

指定要搜索的模式,格式为 正则表达式
默认启用 MULTILINE 模式。

如果选择了 预定义模板 ,则将使用与该模板关联的模式。

您可以通过在模式字符串的开始处添加 (?-m) 来禁用 MULTILINE 模式。

区分大小写

默认情况下,比较区分大小写。 对于不区分大小写的语言,请取消选择。
如果选择了 预定义模板 ,将会使用与该模板关联的比较。

正则表达式模式

默认启用,并同样适用于搜索字符串和替换字符串。 取消勾选以使用固定字符串。

替换为

输入要用于替换字符的文本到 查找内容 框中。 要从文件中删除 查找内容 框中的字符,请将此框留空。

) without a special meaning should be quoted (as\ $`,分别)。

模板

此部分列出了可用的替换模板。

.NET 模板

为替换以下的 Assembly 属性 提供了模板(请参阅 此部分AssemblyInfo Patcher 进行比较):

.NET Core csproj 模板

  • AssemblyName

  • 应用程序标题

  • AssemblyVersion

  • 作者

  • 公司

  • 版权

  • 描述

  • 文件版本

  • PackageId

  • 软件包版本

  • 产品

  • 标题

  • 版本

  • VersionPrefix

  • VersionSuffix

MFC 模板

提供以下 MFC C++ 资源键 的替换模板:

  • 文件描述

  • 公司名称

  • 产品名称

  • 法律版权

  • 文件版本*

  • 产品版本*

Xcode 模板

在以下 Info.plist 文件中提供了替换以下 Core Foundation Keys 的模板:

  • CFBundleVersion

  • CFBundleShortVersionString

  • 或同时使用 CFBundleVersionCFBundleShortVersionString

示例

使用自定义后缀扩展属性值

假设您不想用固定的文字字面量替换您的 AssemblyConfiguration ,而想保留您的 AssemblyConfiguration 来自 AssemblyInfo.cs ,并只在其后加上自定义的后缀,例如: [assembly: AssemblyConfiguration("${AssemblyConfiguration} 由 TeamCity 构建")])

执行以下操作:将默认的替换 $1MyAssemblyConfiguration$7 更改为 $1$5 由 TeamCity$7 构建

对于更改复杂的 regex 模式, 这个外部工具可能会有用。

仅修补指定的文件

默认的 AssemblyInfo 模板遵循通常的 Visual Studio 项目/解决方案布局;但是许多信息可能会在多个项目之间共享,并可以存储在一个共享文件中(例如, CommonAssemblyInfo.cs)。

假设您只想修补这个共享文件;或者您想按项目为基础修补 AssemblyInfo.cs 文件。

请按照以下步骤操作:

  1. 加载与您试图处理的属性相对应的 AssemblyInfo 模板(例如, AssemblyVersion

  2. Look in 字段中的文件路径列表从默认的 */Properties/AssemblyInfo.cs 更改为 */CommonAssemblyInfo.cs ,或者在此处列出多个用逗号或新行分隔的文件,例如, myproject1/Properties/AssemblyInfo.cs,myproject2/Properties/AssemblyInfo.cs

指定包含空格的路径模式

空格通常被认为是模式的一部分,除非它们在逗号之后,因为逗号被认为是分隔符。

请注意,TeamCity 服务器 UI 会在输入字段中删除前导和尾随空格,所以像 <spaces>foo.bar 这样的单行模式将在保存后变为 foo.bar。 以下的解决方案可供参考:

仅更改 AssemblyVersion 属性的最后版本部分 / 构建号:

假设,您在 AssemblyInfo.cs 中的 AssemblyVersion主要.次要.修订.构建 (设置为 1.2.3.* ),您想替换 Build(构建) 部分(仅跟随最后一个点(即 *))。

加载 AssemblyInfo (C#) 模板中的 AssemblyVersion 并更改默认模式:

(^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*])+\.?)+(\"\s*\)\s*\])

助力您

(^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*]+\.)+)[0-9\*]+(\"\s*\)\s*\])

并更改默认替换:

$1\%\build.number%$7

助力您

$1$5\%\build.number%$7
最后修改日期: 2025年 9月 3日