2

我们目前正在 TeamCity 上构建一个“相当”与 CI 无关的 MSBuild 脚本。

该脚本执行以下操作:

  1. 使用 TeamCity 内部版本号对程序集属性进行版本化
  2. 编译解决方案
  3. 使用 NUnit 运行一组单元测试
  4. 使用 NUnit 和 SpecFlow 运行一组验收测试
  5. 使用 Pickles 生成一些文档
  6. 存储工件
  7. 使用当前内部版本号标记/标记 GIT 中的修订版

我说“相当”与 CI 无关,因为有几个地方我们通过 MSbuild 消息任务将内容发布到 TeamCity。

现在,我们已经从业务部门获得了将构建和源代码从 GIT 转移到 TFS 的指示。我使用的最后一个 Microsoft 源代码控制是 SourceSafe,我没有将 TFS 作为 CI 服务器的经验。我想知道我们是否可以保持 MSBuild 脚本与当前一样不可知,并且仍能实现与现在相同的功能。

4

1 回答 1

2

您可以轻松地从 TFS Build 调用 MSBuild 脚本。我相信它在哪里要求构建解决方案,你可以给它任何 MSBuild 文件(不知道我是否曾经指定过非 sln 文件)但如果由于某种原因这不起作用,你可以做一个小调整 TFS 构建模板并使用 MSBuild 活动调用您希望的任何 MSBuild 脚本。

您可以通过编辑构建模板将动态参数传递给 MSBuild(或通过编辑构建定义来传递静态参数)。

对于版本控制,我通常自定义构建模板以生成格式为 Major.Minor.YYMM.DDRRRR 的版本号,其中 Major 和 Minor 是构建定义中设置的参数。YYMMDD 是日期,RRR 我从 TFS BuildNumber Revision 组件中提取(今天为这个构建定义构建了什么)。

我使用TFS Community Build Extensions中的 TFSVersion 自定义 TFS 构建活动来更新我的所有 AssemblyInfo,但如果您的 MSBuild 中已经有版本控制过程,您可以在构建模板中生成所需的版本 # 然后将其作为参数传递给您的 MSBuild 活动。

至于将文件发布回 TFS,您可以使用自定义 MSBuild 任务(我确定某个地方存在,但我没有方便的链接),您可以调用 tfs 命令行工具,或者您可以这样做在构建模板(而不是 MSBuild)中使用提供的工作流活动。

于 2013-04-30T22:04:03.203 回答