3

ビルド ドロップの場所に使用されているサーバーは廃止されます。現在のビルド定義を変更して新しいサーバーを使用する方法は知っていますが、既に完了したビルドの履歴レコードを変更するにはどうすればよいですか? 過去のビルドを開いて [ドロップ フォルダーを開く] をクリックすると、新しいサーバーに移動できるようになりたいです。古いビルドを新しいサーバーに手動でコピーします。

4

2 に答える 2

4

次のサンプルは機能しているように見えました。

using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;

namespace ChangeDropLocation
{
    class Program
    {
        static void Main()
        {
            TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://MyServer:8080/tfs/Collection"));
            var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));

            IBuildDetail buildDetail = buildService.GetBuild(new Uri("vstfs:///Build/Build/1506"));
            buildDetail.DropLocation ="\\somewhere";
            var buildDetails = new List<IBuildDetail>();
            buildDetails.Add(buildDetail);
            buildService.SaveBuilds(buildDetails.ToArray());
        }
    }
}

考慮すべきことの 1 つは、ビルド情報を更新する権限がおそらくないことです。私はプロジェクト管理者ですが、最初の試行で次の結果が得られました。

TF215106: アクセスが拒否されました。DOMAIN\username は、アクションを実行するために、チーム プロジェクト MyTeamProject のビルド定義 myBuildDefinition のビルド情報の更新アクセス許可を必要とします。詳細については、Team Foundation Server 管理者に問い合わせてください。

これを克服するには、TeamExplorer の [ビルド] で右クリックし、[セキュリティ...] を選択して権限を設定します。

于 2012-03-12T12:43:35.550 に答える
2

これを行うためのツールを知りません。たぶんTFSのpowershellコマンドがありますが、それを除いて、適切な予防策を講じた後、SQL Dbを直接更新できると思います。

ドロップ場所へのマッピングは、tbl_Build のコレクション SQL Db に格納されます。

[tbl_Build] から [DropLocation]、[DropLocationRoot]、[LogLocation] を選択

ただし、倉庫に影響があるかどうかはわかりません。そこをまず確認してみるといいかもしれません。

Microsoft は一般的に、このようなものに対して SQL を直接操作しないことを推奨していると思います。代わりに、比較的安全なアプローチである TFS API を使用できます。

于 2012-03-09T16:38:47.157 に答える