在没有提示 TFS 命令行的情况下获取单个工作区
Posted
技术标签:
【中文标题】在没有提示 TFS 命令行的情况下获取单个工作区【英文标题】:Get single workspace without prompt TFS command line 【发布时间】:2017-10-31 15:12:56 【问题描述】:我想要做的应该很简单——我想获取单个 TFS 工作区的信息(在这种情况下与计算机名称相同),并通过文本返回该信息——而不是通过提示窗口(据我了解,这就是 /noprompt 选项的用途)。我正在使用“workspace”命令,根据官方文档 (https://docs.microsoft.com/en-us/vsts/tfvc/workspace-command),这不是 100% 明确的。
注意:
我安装了 Visual Studio 2017 和 2015 的 tf.exe,以及 2015 Power Tools,但我更喜欢 2017 客户端。 我已阅读 TF Workspaces question,并将其视为其他内容 - 我特别想要有关单个工作区的信息(对于 PowerShell 脚本)。【问题讨论】:
是什么让您认为它不受支持?你的确切问题是什么?除非您想直接从 PowerShell 使用 VersionControlServer 对象,否则应该使用 tf 中的 Workspace 命令或 Workspaces 命令。 我没说不支持;在文档中不清楚是否是这样。工作区或工作区命令没有给我我想要的,至少在我正在寻找的格式中(单个工作区的文本详细信息)。 您有指向 VersionControlServer 对象信息的链接吗?我想我没用过。 【参考方案1】:tf.exe 的 /noprompt 选项不允许您查看详细信息。
它允许您创建一个新的工作区或编辑现有的工作区,而无需对话框。
【讨论】:
【参考方案2】:您可以使用 tfs 客户端对象模型来查询本地工作空间。您可以通过工作站对象https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.workstation(v=vs.120).aspx获取本地工作空间
您可以使用版本控制服务器对象来查询其他详细信息、获取文件、更改映射等https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver(v=vs.120).aspx
这篇博客解释了如何加载正确的程序集,它引用了 12.0 对象模型,我建议改用最新的 nuget 包。 https://www.google.nl/amp/s/alistairbmackay.wordpress.com/2016/02/01/manipulating-tfs-with-powershell-part-1-connecting/amp/
最新的对象模型: https://www.nuget.org/packages/Microsoft.TeamFoundationServer.ExtendedClient/
【讨论】:
我还没有测试过,但是 Workstation.GetLocalWorkspaceInfo(string) 方法应该可以满足我的需求。您列出的博客文章我已经看过,但没有意识到 VersionControlServer 对象是我需要的。此外,它的程序集加载代码对我不起作用,我不知道为什么(从那时起我就知道了)。 您提到的 TFS ExtendedClient 与当前 Visual Studio (2017) 安装中包含的库/dll 之间有区别吗?另外,如果是要走的路,VS附带的NuGet包管理器控制台是“推荐”的方法吗?看起来还有其他几种方法可以通过命令行使用它——docs.microsoft.com/en-us/nuget/guides/install-nuget Nuget 自 2015 年起成为首选。不要依赖现有的 VS 安装或 GAC。并用你的脚本打包程序集,不要依赖包 mgmnt 控制台以上是关于在没有提示 TFS 命令行的情况下获取单个工作区的主要内容,如果未能解决你的问题,请参考以下文章