从特定路径加载强名称程序集?

时间:2010-06-23 17:10:23

标签: c# assembly.load

我有一个强名命的程序集,安装到特定的文件夹(而不是GAC)。

Reflector中显示的名称是:

"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"

及其安装路径

"c:\\QueueBall"

我可以使用Assembly.LoadAssembly.LoadFrom加载它,如果是,如何加载?

我是否可以确保强有力的命名得到尊重,即我正在加载的DLL确实是我期待的那个而不是具有相同名称的冒名顶替者?

1 个答案:

答案 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;