首页 > 解决方案 > 是否还有办法以编程方式在 C#、VS2019 中获取最新版本的 TFVC 存储库?

问题描述

我正在尝试用 C# 构建工具,以帮助自动化我工作的公司的构建和部署系统的一部分。我被分配到的最新工具是查看自上次发布以来 TFS 版本控制系统中特定文件组的任何成员是否已在服务器上发生更改。

为确保服务器上没有更改运行此自动化工具的机器尚未发现,我希望能够在 C# 代码中执行类似于tf vc get命令行界面命令的操作到 TFVC。我在 Stack Overflow 上发现了一些关于如何执行此操作的文档和类似问题,但它们都是针对 VS2010 或更早版本的,并且它们引用的 API 不再在 Microsoft 网站上更新。

在较新版本的 Team Foundation Server 中,是否有任何方法可以以编程方式调用类似于 Visual Studio 源代码管理资源管理器中的“获取最新版本”命令的操作?

TFS 中源代码管理资源管理器的小截屏截图

标签: c#tfsvisual-studio-2019azure-devops-rest-apitfs-sdk

解决方案


Azure DevOps (TFS) Rest API 版本中不存在此操作,但您可以使用旧版本,它仍然适用于 TFS 2018/9。如果您安装Microsoft.TeamFoundation.ExtendedClientNuGet,它应该在那里。

如何使用它的示例:

connection = new TfsTeamProjectCollection(new Uri("tfs url"));
connection.Authenticate();
var = versionControl = connection .GetService<VersionControlServer>();
var worksapce = versionControl.GetWorkspace("local-path-of-the-workspace");
// Do the "Get Latest":
workspace.Get();

另一种选择是使用 tf.exe 实用程序并像每个.exe文件一样直接从 c# 代码执行它,例如:

string tfPath = "path/to/tf/exe"
string arguments = "vc get ......"
ProcessStartInfo info = new ProcessStartInfo(tfPath, arguments);
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process p = Process.Start(info);
p.WaitForExit();

推荐阅读