首先,这里有一些背景&我正在努力实现的目标:
在TFS中我的应用程序的主干道下,有一个文件夹树,其中包含许多文档(Word文件等)-用户手册、技术规范等。随着发布的进行,整个主干道被分支(因此在发布时会捕获应用程序和文档的状态)。文档文件夹树故意位于包含VS解决方案的各种文件夹之外;这些文件是由不一定拥有Visual Studio的各种人更新的。它看起来像这样:
- Main
- 核心
- 文件
- UI
- 报告
- 发布
- 1.0.0
- 核心
- 文件
- UI
- 报告
- 1.1.0
- 核心
- 文件
- UI
- 报告
- 1.0.0
每次签入任何Documentation文件夹下的文件时,我都希望将该文件复制到文件共享上的等效文件夹中。当进行发布分支时,我还希望将整个Documentation文件夹复制到文件共享上的等效文件夹中。例如:
- Main
- 文档-------->\doc服务器\docs\main
- 发布
- 1.0.0
- 文档-------->\doc server\docs\1.0.0
- 1.1.0
- 文档-------->\doc服务器\docs\1.1.0
- 1.0.0
此部署必须由TFS服务器完成,并由签入/分支触发——当编辑文档时,它们不在任何VS解决方案中,因此没有生成。
我所读到的关于TFS Build的所有内容都表明,必须有一个解决方案来触发部署。我正在寻找的是类似VSS的"影子"功能,在该功能中,服务器会自动将选定的项目文件夹复制到文件系统中。
有什么办法可以做到这一点吗?
您可以创建一个虚拟解决方案,以通过构建定义获取它要求构建解决方案的部分。您可以创建一个伪/空白解决方案文件,如"新建项目"->"其他项目类型"->"Visual Studio解决方案"->"空白解决方案"。在生成定义中使用该SLN文件。
然后编辑您的默认生成模板,并添加CopyDirectory和InvokeProcess活动来执行您想要执行的额外复制工作(到共享)。如果您想要复制整个目录,可以使用CopyDirectory活动,或者如果您想要拷贝特定的文件扩展名等,可以使用InvokeProcess。
CopyDirectory是直接的,您只需添加源和目标位置,就可以开始了。对于InvokeProcess,您可以输入"FileName=xcopy.exe"并填写正确的参数。
在签入期间触发此生成定义很容易(转到生成定义中的触发器选项卡,然后选择"连续集成-生成每个签入")。但我不确定在发生分支时如何触发构建。
这很直接,如果你需要帮助,请告诉我。