Загрузить сборку со строгим именем по определенному пути?

У меня есть сборка со строгим именем, установленная в определенную папку (а не в GAC).

Имя, как показано в Reflector:

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

и путь, где он установлен

"c:\\QueueBall"

Могу ли я использовать Assembly.Load или же Assembly.LoadFrom загрузить его, и если да, то как?

Могу ли я гарантировать, что строгое именование будет выполнено, то есть, что загружаемая DLL действительно та, которую я ожидаю, а не самозванец с тем же именем?

1 ответ

Решение

Вы можете использовать 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;
Другие вопросы по тегам