TeamCity On-Premises 2024.03 Help

文件内容替换器

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

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

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

  • 替换多个属性

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

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

查看如何 添加构建功能

文件内容替换器设置

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

选项

描述

模板(可选)

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

处理文件

点击 编辑文件列表 并指定将在其中搜索需要替换值的文件路径。 以 +|-:[与签出目录相对的路径].
类蚂蚁通配符 的形式提供一组换行或逗号分隔的规则,例如, dir/**/*.cs

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

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

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

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

文件编码

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

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

查找内容

请指定一种要搜索的模式,该模式需用 正则表达式 格式。
默认情况下,MULTILINE 模式是开启的。
如果选择了预设模板,系统将使用与该模板相关联的模式。

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

区分大小写

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

正则表达式模式

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

替换为

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

$N 序列引用第 N 个捕获组。 所有没有特殊含义的反斜杠( \ )和美元符号( $ )都应被引用(分别为 \\\$)。

模板

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

.NET 模板

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

.NET Core csproj 模板

  • AssemblyName

  • 应用程序标题

  • AssemblyVersion

  • 作者

  • 公司

  • 版权

  • 描述

  • 文件版本

  • PackageId

  • 软件包版本

  • 产品

  • 标题

  • 版本

  • VersionPrefix

  • VersionSuffix

MFC 模板

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

  • 文件描述

  • 公司名称

  • 产品名称

  • 法律版权

  • 文件版本*

  • 产品版本*

Xcode 模板

在以下文件中提供了替换以下 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
最后修改日期: 16日 7月 2024年