古いインスタンスをロード (逆シリアル化)しながら、ワークフロー ランタイム (カスタム アクティビティ) で使用されるアセンブリをアップグレードする方法を見つけようとしています。私の状況は次のとおりです。
- ワークフロー インスタンスを作成し、
CustomActivities
v.1.0.0.0で永続化する CustomActivities
v.2.0.0.0の新しいバージョンの製品を展開する- 新しいランタイムで以前のワークフローをロードしてみてください
v.1 と v.2 の違いは、アセンブリに追加のクラスがいくつかあることです。既存の型の構造は変更されていないため、バイナリの逆シリアル化は引き続き機能すると思います。AssemblyResolve
イベントを使用して、すべてのタイプを v.1 から v.2 にリダイレクトしています
if (args.Name.Contains("CustomActivities"))
{
Type someTypeFromCustomActivities = typeof(WorkflowType);
return someTypeFromCustomActivities.Assembly;
}
しかし、逆シリアル化プロセス中のある時点で、次の例外が発生します。
SerializationException: ID 153 のオブジェクトは、すべての依存関係を解決できない IObjectReference インターフェイスを実装しています。考えられる原因は、相互に依存関係を持つ IObjectReference の 2 つのインスタンスです。
何がこの動作を引き起こす可能性があり、どのように回避できますか? また、サイド バイ サイド アセンブリ (同じアプリ ドメイン内の古いバージョンと新しいバージョン) の実行を伴わないワークフローをアップグレードするための戦略がある場合は、歓迎されます。