加载同一程序集的不同版本

24

使用反射,我需要加载同一个程序集的2个不同版本。我能否在同一个进程中的两个不同AppDomain中加载这2个版本?

我需要将一些数据从旧版应用迁移到新版。请告诉我是否可以这样做,或者我应该使用2个单独的进程。

2个回答

14

1
是的...第一个给我和一群人带来了"程序集已被引用"的问题。这篇7年前的文章,至今在评论区仍然看不到任何解决方法或解释。SO的人们,能帮个忙吗? - Nilzor
InfoSysblog(第二个链接)现在是一个失效的链接。有什么建议吗? - Stealth Rabbi

5
更新: 我认为我应该把我的调查结果发布为一个答案。反射在开发难度、跟踪运行时错误等方面过于复杂。我记得很久以前在类似情况下采用了不同的方法(感谢Brandon),这是我的计划:虽然不太优雅,但在开发和故障排除方面更容易。由于这只是一次性工作,我们只需要让它工作即可。
托管一个远程进程(我称之为服务器),其中包含应用程序的新版本。远程客户端具有旧版本的引用。
远程客户端实例化并加载需要迁移的数据对象。将旧对象转换为通用可序列化对象,并将其作为参数传递给服务器。
远程服务器使用通用数据来实例化和加载新对象。调用新类型上的函数以持久化其数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接