使用反射,我需要加载同一程序集的 2 个不同版本。我可以在同一进程中加载 2 个不同 AppDomain 中的 2 个版本吗?
我需要从旧版本的应用程序到新版本进行一些数据迁移。请让我知道这是否可行,或者我应该使用 2 个单独的过程。
使用反射,我需要加载同一程序集的 2 个不同版本。我可以在同一进程中加载 2 个不同 AppDomain 中的 2 个版本吗?
我需要从旧版本的应用程序到新版本进行一些数据迁移。请让我知道这是否可行,或者我应该使用 2 个单独的过程。
如果您在设计时这样做(您表示您不是),这应该可以帮助您:
http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx
如果您通过反射动态地执行此操作(看起来像这里的情况),这可能会对您有所帮助:
https://www.infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html
更新:我想我会发布我的发现作为答案。在开发工作、跟踪运行时错误等方面,反射被证明太复杂了。我记得很久以前遇到类似情况时,我使用 2 个不同的进程使用了不同的方法(谢谢布兰登)。
这是计划:在开发和故障排除方面没有什么优雅但更容易的。由于这是一次性的工作,我们只需要让它发挥作用。
托管具有新版本应用程序的远程处理进程(我称之为服务器)。远程客户端具有旧版本的引用。
远程客户端实例化并加载具有迁移所需数据的对象。将旧对象转换为通用的可序列化对象,并作为参数传递给服务器。
Remoting Server 使用公共数据来实例化和加载新对象。调用新类型的函数以保存其数据。