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

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

有帮助吗?

解决方案

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);

其他提示

我同意解决方案资源管理器将“按设计”忽略所有这些对象,但前提是您不将它们包含为解决方案项目,我相信您 应该 包含在您的解决方案中,以便新手可以打开该解决方案,执行“获取最新”,并知道他们拥有该解决方案所需的所有依赖项,而不必学习如何通过命令行工具执行此操作,或使用源代码管理如果他们不愿意,就探索者。

将所有非代码依赖项包含为解决方案项(我们使用与其源代码管理文件夹相同的文件夹结构来组织解决方案文件夹)减少了项目新开发人员打开和编译解决方案所需的“巫术”知识。

如果您可以将整个文件夹树链接到 VS 解决方案中的解决方案文件夹,那就太好了。

如果您在不同的文件夹下有依赖项目。使用它循环遍历所有子目录以获取每个项目的最新内容:

从主目录开始 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

出色地...看起来你有三个选择。

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

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

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

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

我知道您提到了批处理文件,但让我为您提供其他内容。

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

但是,您也可以使用 CruiseControl.net 为您进行预定的构建。我使用过 TFS 2008 和 CruiseControl,它们似乎都工作得很好。

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

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

不要这样做。VS 并不像你想象的那么聪明。(每个人都经历过超过 3 个产品周期的神秘且徒劳的结帐就证明了这一点,包括你和我。这不是可靠系统的标志!)

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

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

说啊 导致不完全同步。沿着这条路走下去,只有令人头疼的事情。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top