私はTFSオブジェクトモデルを使用してコマンドラインでいくつかの作業をしています。私自身の特定の実装のためにアーティファクトを導入することなく、tf.exeとtfpt.exeに見られるワークスペース検出のバーチャルを再現したい。現在のところ、私のスクリプトはtf.exeが必要とする情報よりも多くの情報を必要としています。tf.exeとtfpt.exeは、実行ディレクトリに基づいてTFSインスタンスへの接続を確立するにはどうすればよいですか?
具体的には、ユーザにサーバUri(tfsUriString)とコレクション名(tfsCollectionName)を明示的に渡すように要求する必要がありますが、これはtf.exeが行うことができるので不必要で迷惑です。
Uri tfsUri = new Uri(tfsUriString);
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None);
CatalogNode collectionNode = collectionNodes.Where(node => node.Resource.DisplayName == tfsCollectionName).SingleOrDefault();
Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
var vcServer = teamProjectCollection.GetService<VersionControlServer>();
tf.exeと同じ方法でこの検出を実行するために使用できるクラスと方法は何ですか?
素晴らしい!魅力のように動作します。私はWorkspaceInfoクラスの内部を見て、インスタンス化するための何らかの方法を探していました。ワークステーションは決して考えなかった。ありがとう! – bwerks