如何以递归方式获取最新版本的解决方案,就像在Visual Studio的解决方案资源管理器上下文菜单中完成一样?我想从命令行或通过宏执行此操作。我正在尝试使用一组批处理文件自动化我日常工作的一部分。我相信很多开发人员都喜欢这样的东西。
tf get
仅递归获取文件夹的内容(不是解决方案)。它不会考虑项目依赖性等。那不行。
答案 0 :(得分:4)
TFS有.Net SDK,允许您创建自己的与TFS服务器交互的自定义程序。您可以编写一个执行所需任务的小程序:
TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer");
myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);
答案 1 :(得分:3)
答案 2 :(得分:2)
如果您在不同文件夹下有依赖项目。使用它来遍历所有子目录以获取每个项目的最新信息:
从主目录C:\Project\SupportingProjects
FOR /D %%G IN ("*") DO ECHO ..from....%%G && tf get C:\Projects\SupportingProjects\%%G
::Get the latest for the Main project
tf get C:\Projects\MainProject /recursive
在我的情况下,MainProject文件夹包含解决方案文件和项目文件。
我发现这很简单。
有关FOR命令的更多信息:http://ss64.com/nt/for_d.html
答案 3 :(得分:1)
嗯......看起来你有三个选择。
在批处理文件中,在每个目录分支上发出一个tf get。
重新组织您的解决方案,以便所有依赖关系都位于相同的根路径下。
使用右键单击已加载项目并发出get命令的可视方式。
它实际解决方案的唯一时间是在IDE中加载项目时;或者当它由构建服务器加载时。
答案 4 :(得分:0)
我知道你提到了批处理文件,但是让我为你抛出别的东西。
我猜你正在使用2005版的TFS。 2008年内置了所有的日程安排。
但是,您也可以使用CruiseControl.net为您执行预定的构建。我已经使用了TFS 2008和CruiseControl,它们似乎都运行得很好。
答案 5 :(得分:0)
另一个可能的解决方案是使用PowerShell。以下链接是一个代码项目示例,它显示了如何从TFS获取解决方案并在本地构建它。与常规批处理文件相比,Powershell是一个更好的解决方案。
答案 6 :(得分:0)
不要这样做。 VS并不像你想象的那么聪明。 (正如每个人经历过3个以上产品周期的神秘和无效的检查所证明的那样,你和我都包括在内。这不是可靠系统的标志!)
您所描述的内容仅适用于项目到项目的引用。从解决方案资源管理器运行源代码管理操作将“按设计”省略:
只需说否即可完成同步。走那条路,只有头痛。
从命令行运行'tf get',没有路径范围,或者右键单击 - >从Source Control Explorer中的根$ /节点获取。