I have a strongly-named assembly, installed to a specific folder (and not the GAC).
The name as shown in Reflector is:
"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"
and the path where it's installed is
"c:\\QueueBall"
Can I use Assembly.Load
or Assembly.LoadFrom
to load it, and if so how?
Can I ensure that the strong naming is honored, i.e. that the DLL I'm loading really is the one I'm expecting and not an imposter with the same name?
You could use LoadFrom:
var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
Note that this will also load referenced assemblies into the application domain running this code. If you don't want this behavior you could use the LoadFile method.
UPDATE:
You can check the assembly identity before loading it to make sure that it has not been tampered with:
AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
byte[] key = an.GetPublicKey();
Version version = an.Version;
来源:https://stackoverflow.com/questions/3103858/load-strongly-name-assembly-from-specific-path