2

我们现在已经在 TeamCity (6.5) 和 MSBuild 中建立了合理的早期阶段。到目前为止,只有一个解决方案是以这种方式构建的,直到我们在复制之前让事情按照我们想要的方式工作,所以......基本上:

  • 一个由两个构建调用的解决方案——一个在签入时检查构建是否被破坏的 CI 构建,以及一个为测试创建工件的测试构建。
  • 程序集版本号来自单个 VersionInfo.cs 文件(这是个好主意吗?),该文件是解决方案中所有项目中的链接文件。此方法在此处详细介绍:http: //www.codeproject.com/Articles/328977/The-Right-Way-to-Version-Your-Assemblies
  • 两个构建的构建步骤目前仅查看解决方案文件,MSBuild 作为构建运行器

接下来我想做什么:

  1. 版本号为 Major.Minor.Release.Build Number。因此我需要将最后一项设置为 TeamCity 内部版本号
  2. 仅在测试版本中:将工件复制到一个单独的位置,并使用版本号的名称创建一个文件夹

所以,最后的问题..我需要

  1. 使用预构建步骤创建单独的构建项目以修改 VersionInfo.cs AssemblyFileVersion 以反映构建号
  2. 在新的构建项目中创建一个构建后步骤,用于将工件复制到单独目录中的新目录中?

我正在努力解决这个问题,因为两个构建都使用相同的解决方案文件,所以 CI 构建如何不会选择这些项目,以及我是否应该创建一个新的构建文件。如果是这样,我是否保留现有的解决方案文件?

你可能会说我有点困惑......非常感谢。

4

1 回答 1

3

您不需要创建另一个构建配置来修改版本号。

TeamCity 具有内置的AssemblyInfo Patcher 构建功能,可用于您现有的 CI 构建配置。它将无需自己进行任何程序集信息版本控制,因为它会在执行构建之前将当前构建版本(在 TC 中为该构建配置定义)应用于位于检出目录中的所有 AssemblyInfo.cs 文件。您对单个共享的 VersionInfo.cs 文件所做的并不是一件坏事,在这种情况下只是不必要的(当然,除非您使用它来共享其他 AssemblyInfo 信息,如公司、商标、版权等)。

用于存储工件的几个选项。

  • 您可以从 TeamCity数据目录中检索构建工件。要复制到此目录的工件在每个构建配置的常规设置页面上定义。有关详细信息,请参阅构建工件页面

  • 创建一个运行自定义脚本(msbuild、nant、cmd 行等)的构建步骤,以根据您的要求进行复制。

  • 我更喜欢的另一个选择是将工件推回到源代码控制中,在那里它们可以由其他构建直接检出。

(所有链接都指向 TeamCity 6.5.x 文档)

您不需要两个构建配置来实现您正在做的事情;您可以将一个与多个构建步骤一起使用。将解决方案构建和工件集合分解为两个单独的配置似乎并不合乎逻辑。

于 2012-06-20T19:40:43.463 回答