0

開発者が特定の DLL を簡単に追跡できるように、WPF でツールを作成しました。このようにして、どのプロジェクトの DLL が古いか (または DLL のバージョンが広く実装されていない、たとえば 2.2 ですが、私たちは 2.1 を使用しています) を知ることができます。現在、指定された DLL に関する情報を取得するために、開始点として指定されたディレクトリをスキャンします。

これは非常にうまく機能しますが、TFS API を介して直接実行できるかどうかという疑問が生じました。最新バージョンをマップ/取得せずにファイルバージョンを取得できるかどうか疑問に思っています。つまり、(最新バージョンの) すべてのプロジェクトを循環し、TFS API を介して直接 DLL のバージョン番号を収集します。1 つの方法として、誰かにすべてのプロジェクトをハード ドライブにマップしてもらい、ルートでツールを直接実行させるという方法があります。ただし、これはあまり便利ではありません。

誰かが私を正しい方向に向けることができるかどうか疑問に思っています。これは可能ですか?

4

1 に答える 1

0

これには非常に簡単な解決策がありますが、TFS からファイルをダウンロードする必要があります。いずれの場合も、DLL ファイルを見つけることができるように、ユーザー アカウントが必要になります。コードの一部を次に示します。

DLL ファイルのリストを取得するには:

        TfsTeamProjectCollection tfcollection = new TfsTeamProjectCollection(new Uri("URL"), new System.Net.NetworkCredential("USERNAME", "PASSWORD"));
        VersionControlServer server = tfcollection.GetService<VersionControlServer>();

        //Obtain all DLLs. You can narrow this down to the specific one's you want
        ItemSet items = server.GetItems("$/*.dll", RecursionType.Full);

ファイルをダウンロードするには、簡単にするために少し単純化しました。ファイルを循環するには、次のことができます。

        foreach (Item item in items.Items)

次に、ファイルをダウンロードします。これは遅いですが、アルゴリズムが TFS フォルダー構造を再作成するのを止めます。

       string[] split = item.ServerItem.ToString().Split('/');

       //This may not work if you have files in the root
       item.DownloadFile(split[split.Length - 1]);

これにより、DLL ファイルがダウンロードされ、そこからデータを抽出できるようになります。残念ながら、TFS から直接これを行うことはできないため、コピーが必要です。これで、DLL のバージョンを抽出できます。

     FileVersionInfo.GetVersionInfo(localFileLocation).FileVersion

データを提示する方法は明らかにあなた次第です。簡単にするために、item.ServerItem と共にバージョン番号をテキスト ファイルにダンプします。

誰かが似たようなものを探しているなら、これが役立つことを願っています!

于 2013-09-20T21:11:43.553 に答える