gpt4 book ai didi

tfs - 如何成功连接到 TFS 2010 工作项存储?

转载 作者:行者123 更新时间:2023-12-04 15:47:20 26 4
gpt4 key购买 nike

我已经尝试了两种连接到我们正在运行的 TFS 服务器的工作项存储的方法。尝试 A 是连接到配置服务器并使用 GetService<WorkItemStore>()方法。这总是返回 null。

尝试 B 是连接到 TfsTeamProjectCollection 并使用 GetService<WorkItemStore>()方法或将项目集合传递给 WorkItemStore 构造函数。在尝试 B 时,我收到一个异常,指出“错误 HRESULT E_FAIL 已从对 COM 组件的调用返回”。我能找到的唯一信息似乎表明存在一些权限问题,但我已经确认我已通过身份验证作为对整个项目集合具有读取访问权限的用户,并且我通过 VS 2011 开发预览进行了适当的连接和干预。

这是我的连接方式...

    public TfsConfigurationServer GetConfigurationServer()
{
Uri tfsUri = new Uri(configs.TfsUri);
TfsConfigurationServer server = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri, credProvider);
server.Authenticate();
if (server.HasAuthenticated == false)
throw new InvalidOperationException("You can't authenticate against the tfs instance.");
return server;
}

public TfsTeamProjectCollection GetProjectCollectionInstance(string projectCollectionName)
{
Uri tfsUri = new Uri(configs.TfsUri + "/" + projectCollectionName);
TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri, credProvider);
collection.Authenticate();
if (collection.HasAuthenticated == false)
throw new InvalidOperationException("You can't authenticate against the tfs instance.");
return collection;
}

这就是我如何尝试获取 WorkItemStore (用于说明问题的愚蠢代码)...
    public WorkItemProvider()
{
if (workItems == null)
workItems = ServerProvider.ServerInstance.GetService<WorkItemStore>();
if (workItems == null)
workItems = ServerProvider.ProjectCollectionInstance.GetService<WorkItemStore>();
if (workItems == null)
workItems = new WorkItemStore(ServerProvider.ProjectCollectionInstance);
if (workItems == null)
throw new NullReferenceException("Couldn't load work item store.");
}

我与服务器不在同一个域中,但我正在使用 ICredentialsProvider 作为域用户进行身份验证,并且我已确认我已作为该用户进行身份验证。任何指针都会有所帮助。

最佳答案

检查这是否满足您的需求:

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;

namespace GetsWorkItem
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://<TFS>:8080/tfs/<COLLECTION>"));
WorkItemStore workItemStore= (WorkItemStore) teamProjectCollection.GetService(typeof (WorkItemStore));

WorkItem workItem = workItemStore.GetWorkItem(1234);
}
}
}

关于tfs - 如何成功连接到 TFS 2010 工作项存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com