.NET アプリで Team Foundation Server に接続してみましょう。というお題。
次の定形コードで接続できます。ただしこれは DefaultCollection に接続する場合。
コレクションを指定する場合は次回。
Connect.cs
var uri = new Uri(TfsUrl);
// 本来は Windows 認証を使うことが多いと思います。次回以降紹介します。
var configurationServer = new TfsConfigurationServer(uri, new NetworkCredential(UserName, Password));
var collectionNodes = configurationServer.CatalogNode.QueryChildren(
new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None);
// 今回はコレクションノードの最初を固定で使っていますが、実際はコレクションを選ぶ必要があります。
var collectionId = new Guid(collectionNodes[0].Resource.Properties["InstanceId"]);
// くぅ~wようやく取得できましたw
var teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
こうして得られた teamProjectCollection
に対して GetService<T>
メソッドで様々サービス提供クラスのインスタンスを取得することで各種操作を実行できます。
今回は VersionControlServer
というクラスのインスタンスを取得して $/AngelBell/hoge.txt の中身を取得してみましょう。
VersionControlServer はおそらく最もよく使うであろうクラスで、ソース管理エクスプローラ相当の処理を実行するためのものです。
GetContent.cs
var vcs = teamProjectCollection.GetService<VersionControlServer>();
var item = vcs.GetItem("$/AngelBell/hoge.txt");
using (var stream = item.DownloadFile())
using (var reader = new StreamReader(stream))
{
var content = reader.ReadToEnd();
}
なお、通常 GUI で操作する場合、ワークスペースというものを作成してサーバーフォルダとローカルフォルダをマップしていると思います。
同様に、コードから操作する場合も「最新バージョンの取得」や「チェックイン」といった操作はワークスペースを経由することになります。
ワークスペース関連の操作は次回以降で紹介したいと思います。