TFS MSBuild将文件从网络位置复制到构建目录

时间:2013-03-20 20:43:38

标签: tfs msbuild

我们正在使用TFS来构建我们的解决方案。我们有一些我们未包含在项目中的帮助文件,因为我们不希望授予文档编写者对源的访问权限。这些文件放在我们网络上的文件夹中。

当构建开始时,我们希望进程从网络位置获取文件并将它们放入作为源的一部分的帮助文件夹中。

我在xaml中找到了一个名为CopyDirectory的构建过程的活动。我认为这可能有效,但我不确定将哪些值放入Destination和Source属性中。每次成功构建后,构建都将复制到网络位置。我们希望将文件从一个网络位置复制到新的构建目录中。

我可能会以错误的方式接近这一点,但任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:2)

首先,您可能需要考虑您的文档作者将其文档放在TFS中。您可以授予他访问单独文件夹或项目的权限,而无需授予对源代码的访问权限。这样做的好处是:

  • 一切都在源头控制中。丢弃在网络文件夹中的文件很容易被错放或损坏,并且您没有更改它们的历史记录。任何项目的理想之处在于,与项目相关的所有内容都在源代码管理中捕获,因此您可以在需要时提取完整的历史版本。
  • 您可以将文档映射到构建服务器上的其他本地文件夹,这样只需执行源代码的“获取”就会自动将文档准确地复制到需要的位置。

缺点是你可能需要一个额外的CAL才能做到这一点。

另一种(更费力)的方法是让他保存到网络位置,并让开发人员定期检查新文件到TFS。如果文档没有经常更新,这可能是一个可接受的妥协。

但是,如果您希望在构建期间从网络中复制文档,则可以使用其中一个MSBuild Copy命令(您已经知道),或者可以使用Exec。复制命令使用起来比较复杂,因为它们通常填充了从其他构建目标的输出生成的文件名列表,并且通常与解决方案相对路径名一起使用。但是如果您对DOS命令(xcopy / robocopy)感到满意,那么您可能会发现使用Exec运行xcopy / robocopy命令要容易得多。然后,您可以在MSBuild环境之外“开发”并测试xcopy命令,然后将其粘贴到MSBuild脚本中,确信它可以正常运行 - 比在完整构建过程中试用复制设置要容易得多。

执行是documented here。该示例很好地展示了如何执行您想要的操作,但在您的情况下,您可能只需将Command属性替换为您要使用的整个xcopy / robocopy命令(甚至是批处理文件的名称),这样您就赢了需要设置ItemGroup等。