visual-studio-2008 - 关于我们刚刚起步的 TeamCity/MSBuild 设置的后续步骤的建议

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

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

  • 一个解决方案由两个构建调用 - checkin 时进行 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 以反射(reflect)内部版本号
  2. 在新的构建项目中创建一个构建后步骤,用于将工件复制到单独目录中的新目录中?

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

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

最佳答案

您不需要仅仅为了修改版本号而创建另一个构建配置。

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

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

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

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

  • 我更喜欢的另一个选项是将工件推回到源代码管理中,以便其他版本可以直接 check out 它们。

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

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

关于visual-studio-2008 - 关于我们刚刚起步的 TeamCity/MSBuild 设置的后续步骤的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116159/

相关文章:

c# - 如何在 C# 中停止 IIS 7 锁定 .XSLT 文件

c - 如何在C中打印毫秒?

MSBuild:星号和奇怪的 ItemGroup 排除行为

JsonConvert 在 Newtonsoft 和 System.Net.Http.Formatting Visual Studio 2017 for Mac 中都存在

build - 适用于 Visual Studio MSBuild 的现代构建工具

c++ - 打印 Visual Studio 用于编译文件的整个命令

visual-studio-2008 - 无法覆盖 Visual Studio 2008 .dll 文件,拒绝访问

c# - 导入的类型被定义多次 - 仅在 Mono 2.10.1 的 xbuild 下

continuous-integration - 有没有办法在 Travis CI 中访问和查看 html 报告以进行 maven 测试?

debugging - 如何安装和设置 Testswarm?