我的印象是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的程序集也加载其依赖项?
答案 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