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

时间:2016-03-23 12:51:17

标签: c# visual-studio-2013 msbuild tfs2013 coded-ui-tests

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

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

我知道获取并且msbuild可以用于此但我不知道如何正确使用它,因为从服务器获取最新信息会导致冲突,需要在构建解决方案之前先解决。

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

   rd /s MySolutionFolder
   tf get MySolutionFolder

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

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

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

答案 1 :(得分:0)

您还可以使用Team Foundation Power Tools(link to tfpt)。这是一个非常有用的小实用程序=)。特别是,如果要确保工作区与TFS相同,可以使用:

tfpt scorch /diff /deletes /recursive /noprompt

除非您想检查MD5差异而不仅仅是只读位(这可能还取决于服务器/本地工作空间),否则您可能不需要/diff。在这种情况下,/recursive可能也没有做任何事情,因为您没有指定根文件夹。没关系,因为我觉得你想把它应用到整个工作区。

我相当肯定你必须从Visual Studio Dev Prompt中调用它。您可以在批处理文件中添加一行,如:

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

请参阅此SO帖子:How to create a Batch File for Visual Studio Command Prompt

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