文件内容替换器
File Content Replacer 是 构建功能 ,在构建之前通过执行正则表达式替换来处理文本文件。 构建后,它将文件内容恢复到原始状态。
使用文件内容替换器的常见情况是在特定文件中一次替换一个属性,例如,它可以用于用构建编号修补文件。
如果您希望,您可以添加多个 "File Content Replacer" 构建功能:
替换多个属性
在不同的文件/项目中用不同的值替换同一属性
这个功能扩展了由 AssemblyInfo Patcher 提供的能力。
查看如何 添加构建功能。
文件内容替换器设置
您可以手动指定值,也可以使用可以编辑的值预设进行替换。
选项 | 描述 |
|---|---|
模板(可选) | 文件内容替换器为每个需要替换的属性提供了一个模板。 点击 加载模板 按钮会显示包含替换值预设的模板组合框。 模板可以通过在组合框中输入来根据 语言 (例如, |
处理文件 | 点击 编辑文件列表 并指定要搜索替换值的文件路径。 以 类似 Ant 的通配符 是支持的,例如 如果选择了一个 预定义的模板 ,将使用与该模板关联的文件。 |
如果没有文件匹配模式,则构建失败 | 默认启用。 禁用此选项,即使没有文件与指定的模式匹配,也可以防止构建失败。 请注意,如果运行器找到至少一个符合给定模式的文件,即使该文件没有需要替换的内容,此步骤也会被认为是成功的。 |
文件编码 | 默认情况下,TeamCity 将自动检测文件编码。 要明确指定编码,您需要从下拉菜单中选择它。 在指定一个 自定义 编码时,请确保它被代理 支持。 如果选择了一个 预定义模板 ,将使用与该模板关联的文件编码。 |
查找内容 | 指定要搜索的模式,格式为 正则表达式。 如果选择了 预定义模板 ,则将使用与该模板关联的模式。 您可以通过在模式字符串的开始处添加 |
区分大小写 | 默认情况下,比较区分大小写。 对于不区分大小写的语言,请取消选择。 |
正则表达式模式 | 默认启用,并同样适用于搜索字符串和替换字符串。 取消勾选以使用固定字符串。 |
替换为 | 输入要用于替换字符的文本到 查找内容 框中。 要从文件中删除 查找内容 框中的字符,请将此框留空。
|
模板
此部分列出了可用的替换模板。
.NET 模板
为替换以下的 Assembly 属性 提供了模板(请参阅 此部分 与 AssemblyInfo Patcher 进行比较):
.NET Core csproj 模板
AssemblyName应用程序标题AssemblyVersion作者公司版权描述文件版本PackageId软件包版本产品标题版本VersionPrefixVersionSuffix
MFC 模板
提供以下 MFC C++ 资源键 的替换模板:
文件描述公司名称产品名称法律版权文件版本*产品版本*
Xcode 模板
在以下 Info.plist 文件中提供了替换以下 Core Foundation Keys 的模板:
CFBundleVersionCFBundleShortVersionString或同时使用
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 并更改默认模式:
助力您
并更改默认替换:
助力您