7

チーム プロジェクトのユーザーに関するレポートを作成する Team Foundation Server 2010 用のプラグインを実装しようとしています。概念的には、このプラグインを適切に実装するために必要なのは、Visual Studio の "注釈" 機能を使用するときに取得するのと同じデータにアクセスすることだけです。特定の行を最後に作成したのは誰であるかを知る必要があります。コードの。

インターネットでドキュメントやコード サンプルを探しましたが、TFS コマンド ライン ツールの使用などの提案や、一見不完全なコード サンプルしか見つかりませんでした。

クライアントコードで多くの面倒な作業を行うことは気にしませんが、 Changeset内のコードの内容に関する有用な作成者データを取得する明白な方法や、マージ詳細の戻り値から取得する明白な方法はないようです。

4

2 に答える 2

3

一方、Team Foundation Power Toolsプロセスを実行し、その出力を解析する実用的なソリューションを見つけました。

private readonly Regex m_Regex = new Regex(@"^(?<changeset>\d+)(?<codeLine>.*)", RegexOptions.Compiled | RegexOptions.Multiline);

public List<Changeset> GetAnnotations(string filepath, string codeText)
    {
        var versionControlServer = CreateVersionControlServer();

        return m_Regex.Matches(ExecutePowerTools(filepath))
            .Cast<Match>()
            .Where(m => m.Groups["codeLine"].Value.Contains(codeText))
            .Select(v => versionControlServer.GetChangeset(int.Parse(v.Groups["changeset"].Value), false, false))
            .ToList();
    }

    private static VersionControlServer CreateVersionControlServer()
    {
        var projectCollection = new TfsTeamProjectCollection(new Uri(@"TFS URL"));
        var versionControlServer = projectCollection.GetService<VersionControlServer>();
        return versionControlServer;
    }

    private static string ExecutePowerTools(string filepath)
    {
        using (var process = Process.Start(TfptLocation, string.Format("annotate /noprompt {0}", filepath)))
        {
            process.WaitForExit();
            return process.StandardOutput.ReadToEnd();
        }
    }
于 2015-09-21T08:03:44.047 に答える