Adr*_*scu 10 .net workflow-foundation
我试图找到一种方法来升级我们的worklow运行时使用的程序集(自定义活动),同时仍然能够加载(反序列化)旧实例.我的情况是这样的:
CustomActivities
v.1.0.0.0 创建并保留工作流实例CustomActivities
v.2.0.0.0.0v.1和v.2之间的区别在于我们在程序集中有一些额外的类.现有类型的结构没有改变,所以我认为二进制反序列化仍然有效.我们使用AssemblyResolve
事件将所有类型从v.1重定向到v.2
if (args.Name.Contains("CustomActivities"))
{
Type someTypeFromCustomActivities = typeof(WorkflowType);
return someTypeFromCustomActivities.Assembly;
}
Run Code Online (Sandbox Code Playgroud)
然而,在反序列化过程中的某些时候,我们得到以下异常:
SerializationException:ID为153的对象实现了IObjectReference接口,无法解析所有依赖项.可能的原因是两个IObjectReference实例彼此相互依赖.
什么可能导致这种行为,我们如何解决它?此外,如果任何人都有升级工作流程的策略,不涉及并行运行并行程序集(同一应用程序域中的旧版本和新版本),他们将受到欢迎.
程序集解析事件对于更改序列化类型程序集引用没有任何作用。您是否尝试过在计算机级别从 v1 到 v2 进行程序集绑定重定向。
更新:我确实找到了这个链接,其中讨论了使用绑定重定向使用applyTo属性将旧工作流程转发到新版本。
http://msdn.microsoft.com/en-us/library/aa349375.aspx