3

私は Team Foundation Server を初めて使用し、c# を使用してプログラムでプロジェクトに接続しようとしています。次のコードブロックがあります...

string serverName = "http://tfs01:8080";
TeamFoundationServer tfs = new TeamFoundationServer(serverName);
VersionControlServer version = (VersionControlServer)tfs.GetService(typeof (VersionControlServer));
Workspace workspace = version.GetWorkspace("Test", version.AuthenticatedUser);
MessageBox.Show(workspace.Name);

コードを実行すると、次のエラーが表示されます...

TF14061: The workspace Test;vercuskis does not exist.

「テスト」プロジェクトはルートから外れており、VS 2008 チーム エクスプローラーから見ることができます。私はそれにセキュリティ アクセス権を持っており、コードをチェックインおよびチェックアウトするために使用しています。

コード内で「テスト」プロジェクトが正しく参照されているかどうかわかりません。TFS ルートからプロジェクト名を参照する方法の例を探しています。

ありがとうございました、

4

3 に答える 3

6

問題は、上記のコードの「テスト」が、TFS のプロジェクトではなく、TFS ワークスペースを参照していることです。TFS は、ディレクトリとプロジェクトをマップするワークスペースと呼ばれるアイデアを使用します。

使用しているワークスペースは、ソース管理エクスプローラ ウィンドウの上部に表示されます。「ワークスペース:」の後に、使用しているワークスペースの名前が表示されます。

ワークスペースに関する優れたリソースは次のとおりです: http://www.woodwardweb.com/teamrise/000333.html

次に、おそらく TFS からいくつかのフォルダー マッピングも取得する必要があります。TFS のドキュメントはまばらであり、私が行った作業の多くは、TFS がどのように機能するか、および Visual Studio でソース管理エクスプローラーを使用する場合と API がどのように異なるかを理解するために試行錯誤が必要です。

于 2009-07-14T13:31:42.790 に答える
0

私は同じ問題を抱えていました.VSのWorkSpaceが複数のプロジェクトにマップされていたためだと思います。そこで、マップされたプロジェクトが 1 つだけの新しい WorkSpace を作成しました。

私の働いた解決策:VSからCMDを開き、次の行を実行します:tf workspace /new /s:http://tfs2010.server.com:8080/tfs

このような:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf workspace /new /s:http://tfs2010.server.com:8080/tfs

新しい WorkSpace をセットアップするように求められます。 名前: 任意のワークスペース名 (スペースや特殊文字は使用しないでください) ソース管理フォルダー:$/FolderName ローカル フォルダー:C:\FolderName

入力したワークスペース名をコードで使用します

    this._server = config.GetAttribute("server");
    **this._workspace = config.GetAttribute("workspace");**
    this._user = config.GetAttribute("user");
    this._password = config.GetAttribute("psw");
    TeamFoundationServer tfs = new TeamFoundationServer(this._server, new System.Net.NetworkCredential(this._user, this._password));
    tfs.Authenticate();
    VersionControlServer versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
    Workspace ws = versionControl.GetWorkspace(this._workspace, this._user);
于 2016-06-30T08:13:38.097 に答える
0

ブライアンが言ったように、あなたはワークスペースとは何かについて混乱しています。彼のリンクは良いものです: http://www.woodwardweb.com/teamrise/000333.html

バージョン管理システムに関する履歴情報を照会するだけで、ファイルをチェックイン/チェックアウトしたくない場合は、ワークスペースはまったく必要ありません。VersionControlServer オブジェクトを使用するだけです。

  • QueryItems = "tf dir"
  • QueryItemsExtended = "tf プロパティ"
  • QueryPendingChanges = "TF ステータス"
  • QueryHistory = "tf history" -- 列挙により、yield リターンを介して追加のサーバー ラウンドトリップが発生することに注意してください
  • などなど
于 2009-07-15T13:15:23.007 に答える