我有一个强名命的程序集,安装到特定的文件夹(而不是GAC)。
Reflector中显示的名称是:
"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"
及其安装路径
"c:\\QueueBall"
我可以使用Assembly.Load
或Assembly.LoadFrom
加载它,如果是,如何加载?
我是否可以确保强有力的命名得到尊重,即我正在加载的DLL确实是我期待的那个而不是具有相同名称的冒名顶替者?
答案 0 :(得分:7)
您可以使用LoadFrom:
var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
请注意,这也会将引用的程序集加载到运行此代码的应用程序域中。如果您不想要此行为,可以使用LoadFile方法。
更新:
您可以在加载之前检查装配标识,以确保它没有被篡改:
AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
byte[] key = an.GetPublicKey();
Version version = an.Version;