如何使用TeamCity AssemblyInfo修补程序构建功能,但避免SVN外部也被修补?

如何使用TeamCity AssemblyInfo修补程序构建功能,但避免SVN外部也被修补?,teamcity,svn-externals,Teamcity,Svn Externals,我在Subversion中有一个项目设置,其中定义了一些Subversion外部。这些Subversion外部引用其他项目 Subversion布局示例: 回购/项目1/主干 回购/项目2/主干 签出布局示例: $WorkingDir\Project1\trunk $WorkingDir\Project1\trunk\Lib\Project2 TeamCity允许您将AssemblyInfo修补程序构建功能附加到构建配置,但似乎不允许排除外部。由于外部是独立的项目,我希望保留它们的程序集版本或A

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

Subversion布局示例:

  • 回购/项目1/主干
  • 回购/项目2/主干
  • 签出布局示例:

  • $WorkingDir\Project1\trunk
  • $WorkingDir\Project1\trunk\Lib\Project2
  • TeamCity允许您将AssemblyInfo修补程序构建功能附加到构建配置,但似乎不允许排除外部。由于外部是独立的项目,我希望保留它们的程序集版本或AssemblyInfo使用不同的模式修补它们

    目前,由于我的生成配置签出了Project1,并提供了完全的Subversion外部支持,然后应用AssemblyInfo修补程序,因此我的Project1程序集和Project2程序集都具有相同的程序集版本,尽管我希望它们不同


    是否有办法使Project1程序集的版本与Project2程序集的版本不同?

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

    根据,AssemblyInfo修补程序仅更新所有找到的AssemblyInfo源文件(例如AssemblyInfo.cs、AssemblyInfo.vb)中的
    AssemblyVersion
    AssemblyFileVersion
    值,在生成任何内容之前,它不会更改现有已编译二进制文件的版本

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


    如果AssemblyInfo修补程序不符合您的要求,您将不得不恢复手动执行(例如使用单独的MSBuild脚本),并在搜索要更新的AssemblyInfo文件时排除外部目录。

    自TeamCity 9.1以来,有一项新功能。这允许您指定一个模式,以匹配要在其上执行文本替换的文件


    JetBrains建议使用此修补程序而不是AssemblyInfo修补程序“替换大量文件中更大范围的值”

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

    AssemblyInfoDontChange.cs


    由于Project2是作为Project1主干上的Externals属性添加的,因此包含了源代码。AssemblyInfo修补程序的作者似乎忽略了一个重要的考虑事项:SVN外部程序集的版本控制。在我看来,TeamCity.vnext必须有一个@Vansly为什么需要源代码?Project1肯定只引用Project2的编译二进制文件吗?@sijw不,Project1没有引用Project2的编译二进制文件,SVN外部程序不是这样工作的。我需要源代码,因为Project1有一个对Project2的项目引用,所以当Project1编译时,Project2也会按照msbuild文件中指定的目标平台编译。@vansly我想这是一种方法。无论如何,如果你这样做的话,你必须像我建议的那样手动修补AssemblyInfo。