以编程方式创建具有 DotNet 核心的新 TFS 分支

Programmatically create a new TFS branch with DotNet core

我正在使用 DotNet 核心 2.2 自动化 TFS 分支过程。我们正在使用 TFS 2018。

如何使用 C# 在 TFS 源代码管理中创建新分支?

我已经能够对构建进行排队并执行一些其他操作。

Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer 有一个用于 CreateBranch 的方法,但我无法实例化 VersionControlServer。旧文档显示这是用 TfsTeamProjectCollection 完成的,但我找不到任何带有 class.

的库

许多 MSDN 文档都指向已过时或已弃用的参考资料。

更新 如果我安装版本 14.83.0,我发现 TfsTeamProjectCollection 在 MicrosoftTeamFoundationServer.ExtendedClient,但当前版本是 16.143.2.
当我退回到这个旧版本时,我收到与其他包版本相关的运行时错误。如果我将它们降级,则会出现几个构建错误,因此我需要重构。我不能降级,也不应该降级。

什么取代了它?

您可以使用MicrosoftTeamFoundationServer.ExtendedClient NuGet package,那么您将拥有所有类和方法:

var tfs = new TfsTeamProjectCollection(new Uri("tfs-server-url"));
tfs.Authenticate();
var versionControl = tfs.GetService<VersionControlServer>();
versionControl.CreateBranch("sourcePath","targetPath", VersionSpec.Latest);   

更新

对于我这边的测试,它与.net 框架项目一起正常工作。

但是.net Core不行,连相关的Nuget包都无法恢复


是的,它正在使用命名空间 Microsoft.TeamFoundation.VersionControl.Client 和程序集:Microsoft.TeamFoundation.VersionControl.Client

供您参考的示例代码:

var server = new TfsTeamProjectCollection(accountUri, new VssBasicCredential(string.Empty, personalAccessToken));
var vcServer = server.GetService<VersionControlServer>();

var changesetId = vcServer.CreateBranch("$/Demo/Main","$/Demo/Dev/Branch", VersionSpec.Latest, null, "Branch Comment", null, null, null);

您可以在以下位置查看此 class 的官方文档:VersionControlServer Class

为了得到这个Microsoft.TeamFoundation.VersionControl.Client.dll,它已经被移进了一个Nuget package--Microsoft.TeamFoundationServer.ExtendedClient

在这里查看类似的问题: