【问题标题】:Loading different versions of the same assembly加载同一程序集的不同版本
【发布时间】:2010-09-08 15:39:46
【问题描述】:

使用反射,我需要加载同一程序集的 2 个不同版本。我可以在同一进程中加载​​ 2 个不同 AppDomain 中的 2 个版本吗?

我需要从旧版本的应用程序到新版本的一些数据迁移。 请让我知道这是否可行或者我应该使用 2 个单独的进程。

【问题讨论】:

    标签: c# .net reflection dll assemblies


    【解决方案1】:

    如果你是在设计时做的(你表明你不是),这应该对你有帮助:

    http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx

    如果您是通过反射动态地执行此操作(看起来像这里的情况),这可能会对您有所帮助:

    https://www.infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html

    【讨论】:

    • 是的...第一个给了我和其他一些人,“程序集已引用”的问题。 7 岁的帖子,我仍然看不到该帖子的 cmets 字段中的任何解决方案或解释。 SO的人,帮忙?
    • InfoSysblog(第二个链接)现在是一个死链接。有什么建议吗?
    【解决方案2】:

    更新:我想我会发布我的发现作为答案。事实证明,反射在开发工作、跟踪运行时错误等方面过于复杂。我记得很久以前面对类似情况时,我使用 2 个不同的进程使用了​​不同的方法(谢谢 Brandon)。

    这是计划:在开发和故障排除方面没有什么优雅但更容易的。由于这是一次性的工作,我们只需要让它发挥作用。

    托管具有新版本应用程序的远程处理进程(我称之为服务器)。远程客户端具有旧版本的引用。

    远程客户端实例化并加载具有迁移所需数据的对象。 将旧对象转换为通用的可序列化对象,并作为参数传递给服务器。

    Remoting Server 使用公共数据来实例化和加载新对象。调用新类型的函数来持久化它们的数据。

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 2014-01-08
      • 2011-05-17
      • 1970-01-01
      相关资源
      最近更新 更多