【问题标题】:Advice on next steps with our fledgling TeamCity / MSBuild setup使用我们刚刚起步的 TeamCity / MSBuild 设置为后续步骤提供建议
【发布时间】:2012-06-20 09:04:10
【问题描述】:

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

  • 一个解决方案由两个构建调用 - 一个 CI 构建在签入时检查 构建没有被破坏,以及一个为 测试。
  • 程序集版本号来自单个 VersionInfo.cs 文件(这是一个好主意吗?),它是解决方案中所有项目中的链接文件。这 方法在这里详述: http://www.codeproject.com/Articles/328977/The-Right-Way-to-Version-Your-Assemblies
  • 两个构建的构建步骤目前只关注解决方案 文件,使用 MSBuild 作为 Build Runner

接下来我想做什么:

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

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

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

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

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

【问题讨论】:

    标签: visual-studio-2008 msbuild continuous-integration teamcity


    【解决方案1】:

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

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

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

    • 您可以从 TeamCity data directory 检索构建工件。要复制到此目录的工件在每个构建配置的常规设置页面上定义。请参阅Build Artifact page 了解更多信息。

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

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

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

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

    【讨论】:

    • 谢谢你。我没有使用 assemblyinfo 修补程序,但您的建议给了我足够的指导。
    • @Fetchezlavache 很高兴为您提供帮助。如果您认为您的解决方案可能对其他人有所帮助,您也可以随时在此处分享。
    • 会做 siyw... 一旦我解决了其他一些 TC 问题:|
    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2012-12-28
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多