C# 从tfs获取最新信息,然后从批处理文件生成解决方案

C# 从tfs获取最新信息,然后从批处理文件生成解决方案,c#,visual-studio-2013,msbuild,coded-ui-tests,C#,Visual Studio 2013,Msbuild,Coded Ui Tests,我有8个虚拟机,每个虚拟机都有产品代码。我已经创建了一个应用程序,使用它可以触发使用mstest远程运行的codedui自动化。现在的问题是,每次我都必须在所有8个虚拟机上复制并粘贴最新的DLL,以运行最近更新的代码,并且通过网络将文件从本地机器传输到虚拟机需要花费很长时间 是否有一种方法可以创建一个批处理文件,使用该文件可以从tfs服务器下载最新代码,然后在每个VM上构建codedui测试代码 我知道tf get和msbuild可以用于此目的,但我不知道如何正确使用它,因为从服务器获取最新版本

我有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工具()。这是一个非常有用的小实用工具=)。具体而言,如果您想确保您的工作区与TFS相同,您可以使用:

tfpt scorch /diff /deletes /recursive /noprompt
您可能不需要
/diff
,除非您希望检查MD5 diff而不仅仅是只读位(这也可能取决于服务器/本地工作区)。在这种情况下,
/recursive
可能也不会执行任何操作,因为您没有指定根文件夹。这没关系,因为我认为您希望将其应用于整个工作区

我敢肯定,您必须从VisualStudio开发人员提示符调用它。您可以向批处理文件中添加一行,如下所示:

call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86_amd64
请参阅下面的帖子:


Mikael的帖子也是一个很好的回答,因为我的回答无助于解决冲突。我的答案更接近于擦除所有内容并恢复(根据需要)。

关于tf.exe GET命令的文档:编译的DLL有多少MB/GB?有多少个DLL?所有DLL是否每次都会更改,或者通常只更改几次?所有dll的大小都一样吗?还是有几个大的,其余的小的?主要是只有一个dll。但也有xml文件需要添加,因此必须从tfs获取最新的xml文件。如果有重大变化,那么3-4个DLL会被命中。Mikael或我的回答对你有帮助吗?你最终找到解决方案了吗?我还没有试过,因为我离笔记本电脑有点远。我明天会让你们知道,一旦我尝试实施它们。谢谢你的回答。我很快会让你知道的。我只想问一个问题,如果我必须替换那些已经从服务器版本中更改的文件。这可以用TFPT来完成吗?我会看<代码> TFTPTELCOLLY ,<代码> TFPT CycCH < /C>(如我的答案中所提到的),和 TFTPUU < /Cord> Team Foundation Prand工具命令,看看哪一个最适合您的需要。我最好的猜测是,如果烧焦/树胶太重,您可能会寻找
tfpt uu
。再次感谢您的回答,佩里!这真的很有帮助!!好的,太好了!你介意把它标记为答案吗?自从我使用了佩里的方法并为我工作以来,我就把他的解决方案标记为答案。