文件内容替换器
File Content Replacer 是 构建功能,在构建之前通过执行正则表达式替换来处理文本文件。 构建后,它将文件内容恢复到原始状态。
使用文件内容替换器的常见情况是在特定文件中一次替换一个属性,例如,它可以用于用构建编号修补文件。
如果您希望,您可以添加多个 "File Content Replacer" 构建功能:
替换多个属性
在不同的文件/项目中用不同的值替换同一属性
这个功能扩展了由 AssemblyInfo Patcher 提供的能力。
查看如何 添加构建功能。
文件内容替换器设置
您可以手动指定值,也可以使用可以编辑的值预设进行替换。
选项 | 描述 |
---|---|
模板(可选) | 文件内容替换器为每个需要替换的属性提供了一个模板。 点击Load Template按钮,将显示出一个包含替换值预设的模板下拉框。 模板可以通过在组合框中输入来根据语言(例如, |
处理文件 | 点击 编辑文件列表 并指定将在其中搜索需要替换值的文件路径。 以 如果选择了一个 预定义的模板,将使用与该模板关联的文件。 |
如果没有文件匹配模式,则构建失败 | 默认启用。 禁用此选项,即使没有文件与指定的模式匹配,也可以防止构建失败。 请注意,如果运行器找到至少一个符合给定模式的文件,即使该文件没有需要替换的内容,此步骤也会被认为是成功的。 |
文件编码 | 默认情况下,TeamCity 将自动检测文件编码。 要明确指定编码,您需要从下拉菜单中选择它。 在指定一个 自定义 编码时,请确保它被代理 支持。 如果选择了一个 预定义模板,将使用与该模板关联的文件编码。 |
查找内容 | 请指定一种要搜索的模式,该模式需用 正则表达式 格式。 您可以通过在模式字符串的开始处添加 |
区分大小写 | 默认情况下,比较区分大小写。 对于不区分大小写的语言,请取消选择。 |
正则表达式模式 | 默认启用,并同样适用于搜索字符串和替换字符串。 取消勾选以使用固定字符串。 |
替换为 | 在 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
或同时使用
CFBundleVersion
和CFBundleShortVersionString
示例
使用自定义后缀扩展属性值
假设您不想用固定的文字字面量替换您的 AssemblyConfiguration
,而想保留您的 AssemblyConfiguration
来自 AssemblyInfo.cs
,并只在其后加上自定义的后缀,例如: [assembly: AssemblyConfiguration("${AssemblyConfiguration} 由 TeamCity 构建")])
。
执行以下操作:将默认的替换 $1MyAssemblyConfiguration$7
更改为 $1$5 由 TeamCity$7 构建
。
对于更改复杂的 regex 模式,这个外部工具可能会有用。
仅修补指定的文件
默认的 AssemblyInfo
模板遵循通常的 Visual Studio 项目/解决方案布局;但是许多信息可能会在多个项目之间共享,并可以存储在一个共享文件中(例如, CommonAssemblyInfo.cs
)。
假设您只想修补这个共享文件;或者您想按项目为基础修补 AssemblyInfo.cs
文件。
请按照以下步骤操作:
加载与您试图处理的属性相对应的
AssemblyInfo
模板(例如,AssemblyVersion
)将 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
并更改默认模式:
助力您
并更改默认替换:
助力您