如何使用TeamCity AssemblyInfo Patcher构建功能,但是还要修补SVN Externals?

时间:2012-03-07 19:27:14

标签: teamcity svn-externals

我在Subversion中有一个项目设置,它定义了一些Subversion Externals。这些Subversion Externals引用了其他项目。

示例Subversion布局:

  1. 回购/ PROJECT1 /中继线
  2. 回购/ Project2的/中继线
  3. 示例结帐布局:

    1. $工作目录\ PROJECT1 \主干
    2. $工作目录\ PROJECT1 \树干\ LIB \ Project2的
    3. TeamCity允许您将AssemblyInfo Patcher构建功能附加到构建配置,但似乎不允许排除外部。由于Externals是单独的项目,我想保留它们的程序集版本,或者AssemblyInfo以不同的模式修补它们。

      目前,因为我的构建配置检查了Project1的完整Subversion外部支持,然后应用AssemblyInfo Patcher我的Project1程序集和我的Project2程序集都具有相同的程序集版本 - 即使我希望它们不同。

      有没有办法让Project1程序集的版本与Project2程序集不同?

3 个答案:

答案 0 :(得分:5)

目前无法提供要排除的目录。

根据TeamCity docs,AssemblyInfo Patcher仅在构建任何内容之前更新所有找到的AssemblyInfo源文件中的AssemblyVersionAssemblyFileVersion值(例如AssemblyInfo.cs,AssemblyInfo.vb) ,它不会改变现有编译二进制文件的版本。

你提到的外部,它们只是二进制文件,还是包括Project2的所有内容(例如二进制文件,项目文件,源代码等)?你应该只包括二进制文件。

如果AssemblyInfo Patcher不符合您的要求,则必须手动恢复(例如使用单独的MSBuild脚本)并在搜索要更新的AssemblyInfo文件时排除外部目录。

答案 1 :(得分:2)

自TeamCity 9.1以来,有一个新的File Content Replacer功能。这允许您指定模式以匹配您希望执行文本替换的文件。

JetBrains建议使用它而不是AssemblyInfo Patcher"用于替换大量文件中更广泛的值"

答案 2 :(得分:-2)

我发现一个超级简单的解决方案就是将AssemblyInfo.cs文件重命名为

  

AssemblyInfoDontChange.cs