Загрузить сборку со строгим именем по определенному пути? - PullRequest
2 голосов
/ 23 июня 2010

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

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

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

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

"c:\\QueueBall"

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

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

1 Ответ

7 голосов
/ 23 июня 2010

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