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