【问题标题】:.Net same types in two different assemblies.Net 两个不同程序集中的相同类型
【发布时间】:2010-10-15 21:03:24
【问题描述】:

我有一个加载两个程序集 dll 的应用程序。第一个 dll 是一个通用 dll,第二个 dll 引用了第一个 dll 的另一个版本。所有程序集均未签名。

App.exe --> dll1_v1.dll, dll2.dll
dll2.dll --> dll1_v2.dll

dll1_v1.dll 和 dll1_v2.dll 的类型相同,但实现不同。

如果我在 exe 的代码库路径中同时拥有 dll1_v1.dll 和 dll1_v2.dll,那么它们都会被加载,并且 app.exe 中的所有对象实例都指向 dll1_v1.dll,而 dll2 中的所有对象实例都指向 dll1_v2.dll。

如果我需要将 dll1_v2 指向 dll1_v1,从代码库中删除 dll1_v2.dll 并添加 AssemblyResolve 事件处理程序是否正确,以便我可以返回 dll1_v1.dll 的程序集来代替 dll1_v1.dll?

【问题讨论】:

  • 在您的应用程序中删除对 DLL_v1 的引用是否只是回避了问题?我不记得您是否无法访问这些类型,因为它们是间接引用程序集中的依赖项。

标签: .net


【解决方案1】:

您可以通过extern alias 关键字引用同一类的不同版本。 Following blog post解释清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2010-09-17
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多