9

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

tf get仅以递归方式获取文件夹的内容(不是解决方案)。它不查看项目依赖项等。那是行不通的。

4

7 回答 7

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);
于 2008-10-08T22:56:49.107 回答
3

I agree that Solution Explorer will "by design" omit all those objects, but only if you do not include them as Solution items, which I believe you should include in your solutions, so that a newbie can open the solution, do a Get Latest, and know they have all the dependencies needed for that solution, and not have to learn how to do it via a command line tool, or use Source Control Explorer if they don't want to.

Including all the non-code dependencies as solution items (we organize the solution folders using the same folder structure as their source control folders) reduces "voodoo" knowledge required to open and compile the solution for new developers on a project.

It would be good if you could link entire folder trees to a solution folder in the VS solution.

于 2010-07-23T17:57:36.750 回答
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

于 2012-04-16T18:52:06.140 回答
1

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

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

  2. 重新组织您的解决方案,使所有依赖项都位于同一根路径下。

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

唯一真正意识到解决方案的时间是在 IDE 中加载项目时;或者当它由构建服务器加载时。

于 2008-08-29T19:55:29.100 回答
0

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

我猜你使用的是 2005 版的 TFS。2008 内置了所有的调度功能。

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

于 2008-09-09T18:22:54.437 回答
0

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

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

于 2009-10-13T14:15:07.527 回答
0

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

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

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

对不完整的同步说不。沿着这条路走下去,只会让人头疼。

从命令行运行不带路径范围的“tf get”,或右键单击 -> 从源代码管理资源管理器中的根 $/ 节点获取。

于 2009-10-14T05:51:20.830 回答