为什么我会使用Assembly.LoadFile代替Assembly.LoadFrom?

时间:2010-12-27 13:35:08

标签: c# assembly-resolution

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

  

小心 - 这些不一样   的事情。

     

LoadFrom()通过Fusion而且可以   被重定向到另一个组件   不同的路径,但同样的道路   身份如果已加载   LoadFrom上下文。的LoadFile()   根本没有通过Fusion绑定 -   装载机只是前进并加载   正好*调用者要求的内容。它   不使用Load或   LoadFrom context。

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

答案 1 :(得分:0)

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

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