0

首先,这里有一些背景和我想要达到的一般目标:

在 TFS 中我的应用程序的主干下,有一个文件夹树,其中包含许多文档(Word 文件等)——用户手册、技术规范等。随着版本的发布,整个主干被分支(因此应用程序和文档在发布时被捕获)。文档文件夹树故意在包含 VS 解决方案的各种文件夹之外;这些文件由不一定拥有 Visual Studio 的各种人更新。它看起来像这样:

  • 主要的
    • 文档
    • 用户界面
    • 报告
  • 发布
    • 1.0.0
      • 文档
      • 用户界面
      • 报告
    • 1.1.0
      • 文档
      • 用户界面
      • 报告

每次签入任何文档文件夹下的文件时,我都希望将该文件复制到文件共享上的等效文件夹中。创建发布分支时,我还希望将整个文档文件夹复制到文件共享上的等效文件夹中。例如:

  • 主要的
    • 文档 ---------> \doc-server\docs\main
  • 发布
    • 1.0.0
      • 文档 ---------> \doc-server\docs\1.0.0
    • 1.1.0
      • 文档 ---------> \doc-server\docs\1.1.0

此部署必须由 TFS 服务器完成,并由签入/分支触发 - 编辑文档时,它们不在任何 VS 解决方案中,因此没有构建。

我所读到的关于 TFS Build 的所有内容都表明必须有一个解决方案可以构建来触发部署。我正在寻找的是类似于 VSS 的“影子”功能,服务器会自动将选定的项目文件夹复制到文件系统。

有什么办法可以实现吗?

4

1 回答 1

2

您可以创建一个虚拟 SOLUTION 以通过构建定义来获取它要求 SOLUTION 构建部件的位置。您可以创建一个虚拟/空白解决方案文件,如新项目 -> 其他项目类型 -> Visual Studio 解决方案 -> 空白解决方案。在构建定义中使用该 SLN 文件。

然后编辑您的默认构建模板并添加 CopyDirectory 和 InvokeProcess 活动以执行您想要执行的附加复制工作(到共享)。如果要复制整个目录,可以使用 CopyDirectory 活动,或者如果要复制特定文件扩展名等,可以使用 InvokeProcess 活动。

CopyDirectory 很简单,您只需添加源和目标位置就可以了。对于 InvokeProcess,您可以输入“FileName = xcopy.exe”并填写正确的参数。

在签入期间触发此构建定义很容易(转到构建定义中的 Trigger 选项卡并选择“Continous Integration - Build each Check in”)。但是我不确定在发生分支时如何触发构建。

这很简单,如果您需要帮助,请告诉我。

于 2013-07-09T22:49:14.617 回答