Мне необходимо при загрузке дотнет сборки (в виде файла, или набора байтов) на мой сервис получить публичный ключ, которым она подписана, каким образом мне это можно сделать?
Что я пробовал:
Загрузить через Assembly.Load её я не могу, так как у неё могут быть зависимые сборки которые тоже должны быть загружены (а их у меня нет).
Создать временный аппдомен, загрузить в него сборку через Assembly.ReflectionOnlyLoad (через маршалинг .DoCallback), а затем выгрузить аппдомен после извлечения публичного ключа. Тут я сталкиваюсь с тем, что даже если я выгружаю аппдомен - у меня периодически падает загрузка пересобранной сборки с той же версией (например для другого фреймворка).
Ответ
Вы можете использовать для этого библиотеку Mono.Cecil которая так же доступна через NuGet.
var assembly = Mono.Cecil.AssemblyDefinition.ReadAssembly("fileName");
var publicKey = assembly.Name.PublicKey;
Комментариев нет:
Отправить комментарий