TFS构建和本地构建

时间:2013-09-23 14:47:52

标签: c# visual-studio-2012 build tfs tfs2012

我的任务是更新公司过时的构建过程。这一切都是在批处理和perl脚本中完成的。当前的构建过程是:

  1. 通过网络界面安排构建。
  2. 构建服务器将构建过程从队列中删除。
  3. 构建服务器检出TFS源代码控制中的所有文件。
  4. 构建服务器运行几个代码注入脚本,在构建之前修改源代码。
  5. 构建服务器更新版本并签署代码。
  6. 构建服务器使用visual studio编译项目。
  7. 完成后,构建服务器会将输出拉出并将其放入网络共享位置。
  8. 真正困难的部分是代码注入脚本。它们是3个修改大量代码的perl脚本。它们在设计方式上也非常依赖于机器。 (所以我不能在没有大量修改的情况下将它们放在构建过程中)

    我的最终目标是能够在本地开发机器上运行构建过程,并在TFS服务器上运行CI。

    在我的搜索中,似乎无法在本地计算机上模拟TFS Build。那么我唯一的选择是在我的cs.proj文件中使用pre-/ build-build命令行脚本吗?或者有更好的方法在本地计算机上进行复杂构建并在TFS上运行相同的构建吗?

    我见过Using TFS build definitions on a local machine,但这对我来说似乎有些苛刻。如果没有更好的解决方案,我想这不会是一个可怕的解决方案。

1 个答案:

答案 0 :(得分:2)

我过去曾试图做类似的事情。不幸的是,由于TFS Build Workflow所需的一切,没有一个好方法可以解决它。我发现基本上有两种方法可以解决它。

  1. 创建将在服务器和本地
  2. 上运行的MSBuild脚本
  3. 为本地和自定义服务器活动创建MSBuild脚本。
  4. 如果您有意或者要求您能够在开发人员计算机和构建服务器上完全重现构建,那么我会选择#1。否则我会选择#2。第二个选项很好,因为你可以在TFS工作流程中进行主要构建,它为你提供了许多你需要的对象,并为你提供了一个配置设置的好地方,而不必检查/在文件中进行更改如何构建。

    对于任何一种方法,您很可能必须修改Perl脚本以接受参数,以便考虑系统之间必须进行的任何自定义。然后,您可以让用户传入这些内容,或者在MSBuild脚本中将其默认为本地构建,并将它们设置为TFS构建工作流中的参数。因此,如果需要,可以容易地修改它们。然而,无论采用哪种方法,唯一的好方法是标准化需要在开发人员计算机和构建服务器上设置的内容,以便您不必提供尽可能多的自定义。

    如果您选择第一个选项,那么您可以使用TFS构建的Legacy构建配置,它支持使用MSBuild脚本完成所有内容,然后您可以在开发人员和构建服务器之间共享脚本,但如果有人意外更改了此然后它确实存在破坏构建的风险。