Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从内置TFS 2017中获取相关变更集?_C#_Tfs_Tfs Sdk_Changeset - Fatal编程技术网

C# 如何从内置TFS 2017中获取相关变更集?

C# 如何从内置TFS 2017中获取相关变更集?,c#,tfs,tfs-sdk,changeset,C#,Tfs,Tfs Sdk,Changeset,有了c#,我以前能够在XAML构建过程中使用InformationNodeConverters.GetAssociatedChangesets(IBuildDetail)从TFS 2012获取关联的变更集。我从CodeActivityContext.GetExtension()获得了IBuildDetail 现在我正在使用TFS 2017构建过程,我正在尝试使用下面的代码执行类似的操作,但它不会返回变更集 var teamProjectCollection = TfsTeamProjectCol

有了c#,我以前能够在XAML构建过程中使用
InformationNodeConverters.GetAssociatedChangesets(IBuildDetail)
从TFS 2012获取关联的变更集。我从
CodeActivityContext.GetExtension()
获得了IBuildDetail

现在我正在使用TFS 2017构建过程,我正在尝试使用下面的代码执行类似的操作,但它不会返回变更集

var teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://ourtfsserver:8080/tfs/DefaultCollection"));
var versionControlServer = teamProjectCollection.GetService<VersionControlServer>();
var buildServer = teamProjectCollection.GetService<IBuildServer>();
var build = buildServer.GetBuild(new Uri(string.Format("vstfs:///Build/Build/{0}", "3807")));
var changeSets = InformationNodeConverters.GetAssociatedChangesets(build);
var teamProjectCollection=tfstreamprojectcollectionfactory.GetTeamProjectCollection(新Uri(“http://ourtfsserver:8080/tfs/DefaultCollection"));
var versionControlServer=teamProjectCollection.GetService();
var buildServer=teamProjectCollection.GetService();
var build=buildServer.GetBuild(新Uri(string.Format()vstfs:///Build/Build/{0}", "3807")));
var changeSets=InformationNodeConverters.getAssociatedChangeset(构建);
上述所有操作似乎都有效,并且成功返回了生成,但changeSets.Count()为0,而实际上应该返回一些变更集


是否有建议对上述代码进行更改,或者有其他方法进行更改?还是这在TFS 2017中不再有效?

Microsoft正在更新TFS以使用REST API。我想你会得到你想要的

这里有一个链接,可用于拨打剩余电话


另外,如果您还不知道,Microsoft正在弃用XAML构建。有关更多信息,请参阅。

我可以通过使用我认为是REST API的包装来实现这一点:
Microsoft.TeamFoundation.Build2.WebApi.dll

见:

使用Microsoft.TeamFoundation.Build.WebApi;
使用Microsoft.VisualStudio.Services.Common;
使用Microsoft.VisualStudio.Services.WebApi;
使用制度;
Net系统;
var u=新Uri(“http://ourtfsserver:8080/tfs/DefaultCollection/");
var c=新的VssCredentials(新的Microsoft.VisualStudio.Services.Common.WindowsCredential(新的网络凭据(“用户名”、“密码”、“域”)));
var连接=新VSS连接(u,c);
var buildServer=connection.GetClient();
var changesets=buildServer.getbuildchangessync(“projectname”,3807);

如果我不清楚,很抱歉。我不再使用XAML构建过程,而是仍然运行代码来定制构建。我想我正在寻找一些特定的方法来获取变更集,或者通过RESTAPI调用(我还没有成功),还有API 4.1版预览的文档:我是否需要提供足够的凭据才能查看更改集?这看起来很奇怪,因为我可以成功地查看有关构建的其他详细信息。
using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;
using System;
using System.Net;

var u = new Uri("http://ourtfsserver:8080/tfs/DefaultCollection/");
var c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password", "domain")));
var connection = new VssConnection(u, c);
var buildServer = connection.GetClient<BuildHttpClient>();
var changesets = buildServer.GetBuildChangesAsync("projectname", 3807).Result;