从 tfs 获取最新信息,然后从批处理文件构建解决方案

Getting latest from tfs and then building the solution from a batch file

我有 8 个虚拟机,每个都有产品代码。我创建了一个应用程序,使用它我可以使用 mstest 远程触发 codedui 自动化 运行。现在的问题是,每次我必须将所有 8 个虚拟机上的最新 dll 复制并粘贴到 运行 最近更新的代码,并且将文件从本地机器传输到虚拟机需要像永恒一样通过网络复制。

有没有办法创建一个批处理文件,我可以使用它从 tfs 服务器下载最新的代码,然后在每个 VM 上构建我的 codedui 测试代码?

我知道 tf get 和 msbuild 可用于此目的,但我不知道如何正确使用它,因为从服务器获取最新版本会导致冲突,需要在构建解决方案之前先解决这些冲突。

有没有办法在执行 get 操作时使用命令行替换整个解决方案?

有没有更好的方法来解决我的问题。

谢谢!

如果你想替换整个解决方案并从头开始构建我建议你只删除文件夹然后获取它:

   rd /s MySolutionFolder
   tf get MySolutionFolder

但是,这当然需要一些时间。

除非您在 VM 上编辑文件,否则 tf get 不应触发任何冲突。如果您正在编辑文件,则可以结合使用 tf get 和 tf resolve 来处理这些问题。您可以使用类似这样的方法来忽略任何冲突并采用服务器版本。

 tf get MySolutionFolder /recursive /noprompt
 tf resolve /auto:taketheirs

您还可以使用 Team Foundation Power Tools (link to tfpt)。这是一个非常有用的小工具 =)。具体来说,如果您想确保您的工作区与 TFS 相同,您可以使用:

tfpt scorch /diff /deletes /recursive /noprompt

你可能不需要 /diff 除非你想检查 MD5 差异而不只是只读位(这也可能取决于 server/local 工作区)。 /recursive 在这种情况下也可能不会执行任何操作,因为您没有指定根文件夹。没关系,因为我认为您想将其应用于整个工作区。

我相当确定您必须从 Visual Studio 开发提示中调用它。您可以在批处理文件中添加一行,例如:

call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86_amd64

看到这个 SO post 关于那个:How to create a Batch File for Visual Studio Command Prompt

Mikael 的 post 也是一个很好的答案,因为我的答案对解决冲突没有帮助。我的回答更多是擦除所有内容并恢复(根据需要)。