如何从命令行获取Visual Studio解决方案的最新信息?

时间:2008-08-29 08:53:58

标签: visual-studio-2008 command-line tfs macros

如何以递归方式获取最新版本的解决方案,就像在Visual Studio的解决方案资源管理器上下文菜单中完成一样?我想从命令行或通过宏执行此操作。我正在尝试使用一组批处理文件自动化我日常工作的一部分。我相信很多开发人员都喜欢这样的东西。

tf get仅递归获取文件夹的内容(不是解决方案)。它不会考虑项目依赖性等。那不行。

7 个答案:

答案 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)

嗯......看起来你有三个选择。

  1. 在批处理文件中,在每个目录分支上发出一个tf get。

  2. 重新组织您的解决方案,以便所有依赖关系都位于相同的根路径下。

  3. 使用右键单击已加载项目并发出get命令的可视方式。

  4. 它实际解决方案的唯一时间是在IDE中加载项目时;或者当它由构建服务器加载时。

答案 4 :(得分:0)

我知道你提到了批处理文件,但是让我为你抛出别的东西。

我猜你正在使用2005版的TFS。 2008年内置了所有的日程安排。

但是,您也可以使用CruiseControl.net为您执行预定的构建。我已经使用了TFS 2008和CruiseControl,它们似乎都运行得很好。

答案 5 :(得分:0)

另一个可能的解决方案是使用PowerShell。以下链接是一个代码项目示例,它显示了如何从TFS获取解决方案并在本地构建它。与常规批处理文件相比,Powershell是一个更好的解决方案。

http://www.codeproject.com/KB/install/ExtractAndBuild.aspx

答案 6 :(得分:0)

不要这样做。 VS并不像你想象的那么聪明。 (正如每个人经历过3个以上产品周期的神秘和无效的检查所证明的那样,你和我都包括在内。这不是可靠系统的标志!)

您所描述的内容仅适用于项目到项目的引用。从解决方案资源管理器运行源代码管理操作将“按设计”省略:

  • 项目到汇编参考
  • 视频,声音,PDF,VS不支持但可能在产品中发挥不可或缺作用的任何其他类型的媒体
  • 项目中引用的MSBuild * .targets文件
  • 从自定义目标引用的任何类型的文件
  • 构建过程所需的任何第三方可执行文件

只需说即可完成同步。走那条路,只有头痛。

从命令行运行'tf get',没有路径范围,或者右键单击 - >从Source Control Explorer中的根$ /节点获取。