Нагрузка сильно отмеченная сборка с конкретного пути?
-
29-09-2019 - |
Вопрос
У меня сильно называемая сборка, установленная в определенную папку (а не GAC).
Имя, как показано в отражателе:
"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"
и путь, по которому он установлен
"c:\\QueueBall"
Могу ли я использовать Assembly.Load
или Assembly.LoadFrom
загрузить его, а если так?
Могу ли я убедиться, что сильное именование удостоено чести, то есть, что DLL, который я загружаю, действительно - тот, который я ожидаю, а не самозванец с тем же именем?
Решение
Вы могли бы использовать Loadfrom.:
var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
Обратите внимание, что это также загрузит ссылочные сборки в домен приложения, выполняющий этот код. Если вы не хотите, чтобы это поведение вы могли бы использовать Нагрузка метод.
ОБНОВИТЬ:
Вы можете проверить идентификацию сборки перед загрузкой, чтобы убедиться, что она не была подделана:
AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
byte[] key = an.GetPublicKey();
Version version = an.Version;