根据documentation for System.Assembly:
他们建议您更常用显示名称加载程序集(例如,“System.Windows.Forms,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”)。
这对我没有任何意义。如果要通过其版本和公钥引用程序集,则应在编译时添加引用;您不会在运行时使用Assembly类加载它。在运行时加载程序集的典型方案是,当您加载一个插件时,将通过路径完成 - 因为您要么扫描目录以获取插件,要么正在读取某种清单说明了它们的位置。
为什么文档会说,在您动态加载程序集的场景中,按路径加载它是“罕见的”?据我所知,它是通过显示名称加载的,这很少见。
答案 0 :(得分:2)
嗯,它应该是罕见的,因为它是如此麻烦。但是,插件往往由LoadFrom()加载。从不通过LoadFile(),那就是要求真正的麻烦。
麻烦的是,您无法真正预测插件所依赖的程序集会发生什么。正确解决这些问题是一个废话。您应该支持的解决方案是.config文件,以便您可以使用Load()和探测路径是可预测的。
答案 1 :(得分:1)
我相信他们所说的是,如果你指定一个路径,它将从该路径加载,但是他们更喜欢你告诉它你想要加载什么,并让.net运行时从它所在的位置加载它根据其规则“应该”成为。
http://msdn.microsoft.com/en-us/library/yx7xezcf%28VS.71%29.aspx
答案 2 :(得分:1)
我已按显示名称加载“插件”。为什么?好吧,因为相信与否,程序集根本不需要存在于磁盘上(或者至少不是以直接路径指向它们的方式)。这非常有用。
此外,序列化程序集等“可选”程序集通常按名称Assembly.Load
编辑。