需要在签入时将文档文件复制到网络共享的TFS Build(但没有要构建的sln)-类似于VSS shadow



首先,这里有一些背景&我正在努力实现的目标:

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

  • Main
    • 核心
    • 文件
    • UI
    • 报告
  • 发布
    • 1.0.0
      • 核心
      • 文件
      • UI
      • 报告
    • 1.1.0
      • 核心
      • 文件
      • UI
      • 报告

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

  • Main
    • 文档-------->\doc服务器\docs\main
  • 发布
    • 1.0.0
      • 文档-------->\doc server\docs\1.0.0
    • 1.1.0
      • 文档-------->\doc服务器\docs\1.1.0

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

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

有什么办法可以做到这一点吗?

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

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

CopyDirectory是直接的,您只需添加源和目标位置,就可以开始了。对于InvokeProcess,您可以输入"FileName=xcopy.exe"并填写正确的参数。

在签入期间触发此生成定义很容易(转到生成定义中的触发器选项卡,然后选择"连续集成-生成每个签入")。但我不确定在发生分支时如何触发构建。

这很直接,如果你需要帮助,请告诉我。

最新更新