1

2つの引数1を入力.xmlファイルとして受け取り、.htmファイルとして出力するコンソールアプリケーションを作成しています

以下はtfsにアクセスするためのコードです

TfsTeamProjectCollection teamProjectCollection =
                TfsTeamProjectCollectionFactory.GetTeamProjectCollection
                (new Uri("http://myServer:8080/tfs/defaultcollection"));

            var buildService = (IBuildServer)teamProjectCollection.GetService(
                                                 typeof(IBuildServer));

IBuildDefinition myBuildDefination = buildService.GetBuildDefinition(
                   "MyProjectName", "MyBuildDefinationName");
            Uri lastKnownGoodBuild = myBuildDefination.LastGoodBuildUri;
            IBuildDetail myBuildDetail = buildService.GetBuild(lastKnownGoodBuild);
            string dropLocation = myBuildDetail.DropLocation;

しかし、上記は私にとってはうまくいかないようです...だから私は手動でパスを渡すことを考えました。以下のコードスニペットでわかるように

// i have just added blackslash at the start and my problem solved
    string xmlfile = "\\\\myTfsPath\\CodeMetricsResult.xml";
     if (File.Exists(xmlfile))
     {
          //do something
     }

しかし、何らかの理由で...常に私のelseブロックに移動します。

私が間違っていることを教えてください

注....tfsパスはネットワーク上にあり、私はそれにすべてアクセスできます。

ありがとう、

4

1 に答える 1

0

後者の部分は、既存のファイルを指す完全な入力に対して機能する必要があります@"C:\Folder\CodeMetricsResult.xml"
。これは、ネットワーク内のファイルに対しても有効です@"\\netdrive\Folder\CodeMetricsResult.xml"

。TFS-SDK を使用するスニペットを試してみましたが、正常に機能しました。いくつかのヒント:

  • http://myServer:8080/tfs/defaultcollectionチーム エクスプローラーで TeamCollection のルートを右クリックして正しいことを確認し、[プロパティ] を選択して、[Url] の下のエントリが一致することを確認します。
  • MyProjectNameTeamProject の正確な名前とMyBuildDefinationNameビルド定義名が一致することを確認してください。
  • 「ビルド」の下で右クリックMyBuildDefinitionNameし、「ビルド定義の編集」を選択します。「BuildDefaults」の下に移動し、「このビルドは出力ファイルをドロップ フォルダーにコピーします」を確認します。
  • 最後に成功した のビルドMyBuildDefinionNameがまだ永続的であること (= 削除されていないこと) を確認してください。これを行うには、TeamExplorer で右クリックし、[ViewBuilds] を選択して、ポップアップするビルド エクスプローラーで見つけます。見つかったら、ビルド サマリーで [ドロップ フォルダーを開く] をクリックして、TFS がそれを保持していることを確認します。
于 2012-07-17T11:16:12.803 に答える