2

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

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

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

如果我用 LoadFrom 替换 LoadFile,如果有的话,可能会破坏什么?

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

4

2 回答 2

4

小心——这些不是一回事。

LoadFrom() 通过 Fusion,如果已经在 LoadFrom 上下文中加载了一个程序集,则可以将其重定向到不同路径但具有相同标识的另一个程序集。LoadFile() 根本不通过 Fusion 绑定 - 加载器只是继续并准确地加载*调用者请求的内容。它不使用 Load 或 LoadFrom 上下文。

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

于 2010-12-27T13:37:41.090 回答
0

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

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

于 2010-12-27T14:48:56.167 回答