9

TFS に接続して作業項目情報を取得する ac# アプリケーションを作成しようとしています。残念ながら、TFS SDK を使用するすべての例は、現在のユーザーの既定の資格情報 (つまり、私のドメインのログイン情報) を使用しているようです。私が見つけた最も近い情報は、TeamFoundationServer (String, ICredentials)コンストラクターを使用することですが、インターフェイスとインターフェイスする適切なクラスの情報が見つかりませんICredentials(特に、System.Net ICredentials ではなく、TeamFoundationServer 固有の ICredentials を使用しているように見えるため)。

特定のユーザー名/パスワード/ドメインの組み合わせで TFS にログインするための洞察を持っている人はいますか?

4

3 に答える 3

19

次のコードが役立ちます。

NetworkCredential cred = new NetworkCredential("Username", "Password", "Domain");
tfs = new TeamFoundationServer("http://tfs:8080/tfs", cred);
tfs.EnsureAuthenticated();

ドメインは実際のドメイン、またはワークグループの場合は、TFS アプリケーション層をホストするサーバーの名前です。

于 2010-06-30T15:25:54.090 に答える
14

TFS 2015 & 2017 では、言及されているオブジェクトとメソッドは非推奨になっています (または非推奨になっています)。

特定の資格情報を使用して TFS に接続するには:

// For TFS 2015 & 2017

// Ultimately you want a VssCredentials instance so...
NetworkCredential netCred = new NetworkCredential(@"user.name", @"Password1", "DOMAIN");
WindowsCredential winCred = new WindowsCredential(netCred);
VssCredentials vssCred = new VssClientCredentials(winCred);

// Bonus - if you want to remain in control when
// credentials are wrong, set 'CredentialPromptType.DoNotPrompt'.
// This will thrown exception 'TFS30063' (without hanging!).
// Then you can handle accordingly.
vssCred.PromptType = CredentialPromptType.DoNotPrompt;

// Now you can connect to TFS passing Uri and VssCredentials instances as parameters
Uri tfsUri = new Uri(@"http://tfs:8080/tfs");
var tfsTeamProjectCollection = new TfsTeamProjectCollection(tfsUri, vssCred);

// Finally, to make sure you are authenticated...
tfsTeamProjectCollection.EnsureAuthenticated();
于 2017-01-11T14:06:01.610 に答える
4

数年後、これは TFS 2013 API でそれを行う方法です。

// Connect to TFS Work Item Store
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain);
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection");
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, networkCredential);
WorkItemStore witStore = new WorkItemStore(tfs);

それがうまくいかない場合は、資格情報を他のCredentialクラスに渡してみてください(私にとってはうまくいきました):

// Translate username and password to TFS Credentials
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain);
WindowsCredential windowsCredential = new WindowsCredential(networkCredential);
TfsClientCredentials tfsCredential = new TfsClientCredentials(windowsCredential, false);

// Connect to TFS Work Item Store
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection");
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, tfsCredential);
WorkItemStore witStore = new WorkItemStore(tfs);
于 2015-10-05T09:07:09.357 に答える