为什么MSDN说通过路径加载程序集“很少”?

时间:2010-07-05 15:19:17

标签: .net assemblies msdn

根据documentation for System.Assembly

  

LoadFileLoadFrom方法适用于必须通过路径标识程序集的罕见情况。

他们建议您更常用显示名称加载程序集(例如,“System.Windows.Forms,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”)。

这对我没有任何意义。如果要通过其版本和公钥引用程序集,则应在编译时添加引用;您不会在运行时使用Assembly类加载它。在运行时加载程序集的典型方案是,当您加载一个插件时,通过路径完成 - 因为您要么扫描目录以获取插件,要么正在读取某种清单说明了它们的位置。

为什么文档会说,在您动态加载程序集的场景中,按路径加载它是“罕见的”?据我所知,它是通过显示名称加载的,这很少见。

3 个答案:

答案 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编辑。