【问题标题】:Why would I use Assembly.LoadFile in lieu of Assembly.LoadFrom?为什么我要使用 Assembly.LoadFile 代替 Assembly.LoadFrom?
【发布时间】:2010-12-27 13:35:08
【问题描述】:

我的印象是Assembly.LoadFrom 使用ApplicationBase 和PrivateBinPath。我的印象是 Assembly.LoadFile 没有。

为什么有人想使用 LoadFile?换句话说,如果我的理解是正确的,为什么有人不想使用 ApplicationBase 和 PrivateBinPath?

我正在处理一些使用 LoadFile 的现有代码,但我不明白为什么会这样做。 LoadFile 显然不会从同一目录加载依赖项。 LoadFrom 方法确实加载依赖项(来自文档:加载源上下文...允许找到并加载该路径上的依赖项,因为路径信息由上下文维护。)我会喜欢将它从使用 LoadFile 转换为使用 LoadFrom。

如果我将 LoadFile 替换为 LoadFrom,可能会出现什么问题?

即使它是良性的,也可能是我无法根据项目时间表进行更换。如果我不能用 LoadFrom 替换 LoadFile,有没有办法说服用 LoadFile 加载的程序集加载依赖项?是否有我可以使用的打包技巧(嵌入式程序集、ILMerge、AssemblyResolve 事件等)可以允许加载了 LoadFile 的程序集也加载其依赖项?

【问题讨论】:

    标签: c# assembly-resolution


    【解决方案1】:

    小心 - 这些不一样 东西。

    LoadFrom() 通过 Fusion 并且可以 被重定向到另一个程序集 不同的路径,但相同 如果已经加载了一个身份 LoadFrom 上下文。加载文件() 根本不通过 Fusion 绑定 - 装载机只是继续装载 正是*来电者的要求。它 不使用负载或 LoadFrom 上下文。

    http://blogs.msdn.com/b/suzcook/archive/2003/09/19/loadfile-vs-loadfrom.aspx

    【讨论】:

      【解决方案2】:

      除了 Madhur Ahuja 的回答之外,请注意,在大多数情况下,您实际上想要使用的是 Assembly.Load

      http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57143.aspx

      【讨论】:

        猜你喜欢
        • 2011-08-09
        • 2021-10-08
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 2012-06-16
        • 2013-06-08
        • 2011-03-20
        相关资源
        最近更新 更多