1

私は何時間も代替案を探していました、そして私はいくつかの本当に奇妙なことが起こっていました。

そこで、問題を切り分けるために、xamlテンプレート内に入る非常に単純なコードアクティビティを作成しました。

using System.Activities;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Build.Workflow.Activities;

namespace Weco.TeamBuild.FirmwareActivityPack
{
    [BuildActivity(HostEnvironmentOption.Controller)]
    public sealed class TestActivity: CodeActivity<string>
    {
        protected override string Execute(CodeActivityContext context)
        {
            context.TrackBuildMessage("Inside TestActivity", BuildMessageImportance.High);
            return "success";
        }
    }
}

「エージェントで実行」シーケンス内でこのアクティビティを実行しようとすると、従来のエラーが発生しました。

Cannot create unknown type '{clr-namespace:Weco.TeamBuild.FirmwareActivityPack;assembly=FirmwareActivityPack}TestActivity'.

TestActivityが存在するアセンブリをソース管理でチェックしていて、ビルドコントローラーがオンラインのいくつかの記事で推奨されているようにそれを指し示しています。

興味深い要素は、そのアクティビティのコピーをテンプレートの最上部に配置すると、正常に実行されることです(ただし、最初のTestActivityのみ)。「カスタムアセンブリへのバージョン管理パス」はビルドコントローラーに対してのみ有効であり、エージェントに対しては有効ではないようです。ビルドサーバーのGACに何かをインストール/アンインストールする必要がないようにしようとしています。

参考までに、TFSはmachine_1にインストールされ、Team Build(コントローラー+ 4エージェント)はmachine_2にインストールされます

4

1 に答える 1

3

自分で答えを見つけました。

問題は、ビルドが失敗したときに表示されるエラーメッセージが一般的すぎることです。ビルドコントローラーのプロパティからカスタムアセンブリパスをクリアし、ビルドマシンのGACにアセンブリをインストールしました。

ビルドはまだ失敗しましたが、別のメッセージが表示されます。

「ビルドプロセスは検証に失敗しました。詳細:検証エラー:アクティビティ「1:DynamicActivity」のプライベート実装に次の検証エラーがあります:TF28001:アクティビティ「TestActivity」はAgentScopeのコンテキストでは使用できません。」

これで答えの検索は簡単になりました。解決策は、カスタムアクティビティのクラス属性を次のように変更することです。

 [BuildActivity(HostEnvironmentOption.Agent)]
 public sealed class UpdateFirmwareVersionBeforeCompiling : CodeActivity<string>

そしてそれはトリックを行います

于 2011-09-21T02:06:42.580 に答える