2

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

Reflector 中显示的名称为:

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

它的安装路径是

"c:\\QueueBall"

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

我能否确保尊重强命名,即我正在加载的 DLL 确实是我所期望的,而不是同名的冒名顶替者?

4

1 回答 1

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;
于 2010-06-23T17:12:25.453 回答