문제

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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top