Tfs 查询工作项时直接输入用户信息

Tfs 查询工作项时直接输入用户信息,tfs,tfsbuild,tfs-sdk,Tfs,Tfsbuild,Tfs Sdk,当代码运行到第2行时,Windows将显示一个弹出窗口,用于输入TFS访问的用户名、密码: TeamProjectCollection = new TfsTeamProjectCollection(new Uri(url), new UICredentialsProvider()); TeamProjectCollection.Connect(Microsoft.TeamFoundation.Framework.Common.ConnectOptions.IncludeServices); Te

当代码运行到第2行时,Windows将显示一个弹出窗口,用于输入TFS访问的用户名、密码:

TeamProjectCollection = new TfsTeamProjectCollection(new Uri(url), new UICredentialsProvider());
TeamProjectCollection.Connect(Microsoft.TeamFoundation.Framework.Common.ConnectOptions.IncludeServices);
TeamProjectCollection.EnsureAuthenticated();
IsConnected = true;
有任何方法可以自动分配用户名、密码,而无需从windows弹出窗口登录


谢谢。

如果您想直接插入用户凭据,而不使用进程正在运行的凭据,以下操作对我有效:

WindowsCredential credentials = new WindowsCredential(new NetworkCredential(username, domain, password), new MyCredentials(username, domain, password));
TfsTeamProjectCollection connectedTPC = new TfsTeamProjectCollection(tfsUrl, new TfsClientCredentials(credentials));
两次提供凭证有点奇怪,但是如果没有MyCredentials,我将无法从TFS获得任何答案,不知道为什么

public class MyCredentials : ICredentialsProvider
{
    private NetworkCredential credentials;
    #region ICredentialsProvider Members
    public MyCredentials(string user, string domain, string password)
    {
        credentials = new NetworkCredential(user, password, domain);
    }

    public ICredentials GetCredentials(Uri uri, ICredentials failedCredentials)
    {
        return credentials;
    }

    public void NotifyCredentialsAuthenticated(Uri uri)
    {
        // who cares
    }

    #endregion
}

当它提示输入凭据时,这意味着运行进程的凭据对服务器没有权限。