2

既存のドロップをプロモートしようとしていますが、ドロップフォルダーをターゲット環境にデプロイする前に、特定のビルド名/番号が有効(ステータスと品質)であることを検証する必要があります。

このようなブログに基づいて(http://www.woodwardweb.com/dotnet/tfs_build_api_b.html)このようにビルドサーバーに接続しようとしていますが、成功しませんでした。

string tfsProjectCollectionUrl = @"http://collectionServer:8080/tfs/collection";
var tfs = TeamFoundationServerFactory.GetServer(tfsProjectCollectionUrl); 
tfs.EnsureAuthenticated();

IBuildServer tfsBuildServer = tfs.GetService<IBuildServer>();
//tfsBuildServer == null

コレクションとビルドの2つのサーバーがあります。ビルドのTFS管理コンソールに「collectionServer\collection用に構成されたビルドサービス」と表示されます。ここで何が欠けているのかわかりません。


更新:
MSDNサポートリソースを利用しました。これはややタイムクリティカルであり、これらの操作を外部アセンブリに抽出することである程度の進歩を遂げたためです。コレクションを取得する私の方法はうまくいったようで、CodeActivityの内部に住むのは幸せではありませんでした。これで、CodeActivityがこの外部アセンブリを呼び出して、dropPathToPromoteを返すか、ステータスと品質の条件が満たされていない場合は例外をスローします。

これは、テストハーネスワークフローでは正常に機能しますが、飛行中は機能しません。ビルドを実行してから最初の6〜7秒以内にこのエラーが発生します。
Could not load file or assembly 'MyTFSAPICallingAssembly.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

新しいアセンブリは、ビルドコントローラーが取得するカスタムアセンブリVCSフォルダーに含まれ、エージェント一時フォルダーはこれらのdll(すべての外部アセンブリとカスタムアセンブリ)で更新され、新しいビルド定義は、このCodeActivityを含むプロセステンプレートをレンダリングします例外なく、ルートカスタムアセンブリを参照する他のビルド定義は失敗せずに実行されます。

4

2 に答える 2

1

わかりました、私は初心者のように感じます。TFS API コードを配置したアセンブリのプラットフォームは "x86" とマークされていましたが、呼び出し元の CodeActivity アセンブリは "Any CPU" でした。それが修正されると、ビルドは問題なく実行されました。クリーンアップする補助的なビルドの失敗がまだいくつかありますが、問題は解決したように見えます。

于 2013-02-20T22:00:39.363 に答える
0

projectcollection からサービスを取得する必要があります

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(@"http://collectionServer:8080/tfs/collection"));
IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
于 2013-02-16T03:16:23.490 に答える