2

どのビルドにどの変更セットが含まれていたかを取得するには、Team Foundation Sidekicks の「Label Sidekick」を使用します。ここで、ビルドのラベルを配置し、新しくビルドされた変更セットを見つけることを期待します。

TFS 2010 での開発プロセスは「ゲート」チェックインを使用しているため、最新のチェックインが Sidekicks に表示されないという状況に直面しています (実際には以前のビルドの変更セットを受け取ります)。ラベル付けが行われる時点では、最新の変更がまだコミットされていないため、これは説明できます。

BuildLog は、関連する変更セットを正しく報告します。

ビルド プロセス テンプレートでいくつかの実験を行いましたが、必要なものが得られないようです。たとえば、Labeling アクティビティを「Run On Agent」スコープの外に配置すると、最初に「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されてビルドが失敗します。(これは、2 番目の部分を実行するために「ラベル」変数と「ワークスペース」変数の範囲を広げなければならなかったという事実に関連していると思います)。
この試行のビルド プロセス テンプレートの「前」の状態はこちら(これは機能します)、「後」の状態 (「オブジェクト参照が設定されていません..」) はこちらです。

要約すると、次の 2 種類の入力が役に立ちます。

ゲート チェックインがコミットされたにラベル付けが行われるようにするには、ビルド プロセス テンプレートをどのように変更すればよいですか? (-- これにより、Sidekicks での表示が合理化されます)

また

各ビルドの関連する変更セットをプログラムで取得するにはどうすればよいですか? (-- これにより、Sidekicks の角度を時代遅れにする可能性のある小さなアプリを作成できるようになります)

4

1 に答える 1

3

これを行うには、TFS API を使用できます。

        public static void GetBuild()
    {
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsdevlonuk:8080/tfs/gazprom.mt"), new UICredentialsProvider());
        tfs.EnsureAuthenticated();
        var buildServer = tfs.GetService<IBuildServer>();

        // Get Project Name
        var versionControl = tfs.GetService<VersionControlServer>();
        var teamProjects = versionControl.GetAllTeamProjects(true);

        // Get Builds for a team project
        var buildDetails = buildServer.QueryBuilds(teamProjects[0].Name);

        // For each build
        foreach (IBuildDetail buildDetail in buildDetails)
        {
            // Get the build details
            var buildInfor = buildDetail.Information;

            // More build infor like shelveset, etc
            Debug.Write(buildDetail.LabelName + buildDetail.ShelvesetName);

        }

上記のコードは、ビルドの詳細をプログラムで取得するのに役立ちます。プログラムで tfs に接続し、tfs api を使用する方法に関するいくつかのブログ投稿があります。http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx

于 2011-07-13T00:21:01.517 に答える