0

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

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

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

我可能以错误的方式处理这个问题,但任何帮助将不胜感激。

谢谢。

4

1 回答 1

2

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

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

缺点是您可能需要额外的 CAL 才能让他这样做。

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

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

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

于 2013-03-20T21:18:57.657 回答