[英]How to load same plugins from 2 different assemblies, and serializing and deserializing types between the two? C# .net
所以我有两个.net程序集,一个是wpf,另一个是windows服务。 他们使用wcf与protobuf.net进行对话,以便序列化类型。
一切都工作顺利然而我只是制作了一个加载插件的原始插件系统,我的项目中的两个程序集加载了相同的插件,目的是通过网络发送类。
所以...... 1. WPF App使用Assembly.LoadFrom加载,加载插件(.net dlls)2。WCF App使用Assembly.LoadFrom加载插件(相同的.net dll)3。两个程序集共享一个dll(对象库)在源代码中明确引用。
对象库中的所有类型都可以在一端进行序列化,遍历线路并反序列化没有问题。
插件中的类型可以在任一端序列化,但另一端在尝试反序列化时抛出一个未解析的类型异常,即使它们是相同的类型。
发现我的问题,感谢霰弹枪的意愿帮助,这将是很多代码展示。
基本上protobuf无法加载类型,因为它在应用程序域的加载上下文中不存在。 阅读MSDN上的一些东西必须处理AppDomain.CurrentDomain.AssemblyResolve事件并返回插件类型的正确程序集。
如果您想加载插件程序集,那么MEF就是一个非常出色的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.