Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Анализ сборок дотнета

#c_sharp #net


Мне необходимо при загрузке дотнет сборки (в виде файла, или набора байтов) на мой
сервис получить публичный ключ, которым она подписана, каким образом мне это можно сделать?

Что я пробовал:


Загрузить через Assembly.Load её я не могу, так как у неё могут быть зависимые сборки
которые тоже должны быть загружены (а их у меня нет).
Создать временный аппдомен, загрузить в него сборку через Assembly.ReflectionOnlyLoad
(через маршалинг .DoCallback), а затем выгрузить аппдомен после извлечения публичного
ключа. Тут я сталкиваюсь с тем, что даже если я выгружаю аппдомен - у меня периодически
падает загрузка пересобранной сборки с той же версией (например для другого фреймворка).

    


Ответы

Ответ 1



Вы можете использовать для этого библиотеку Mono.Cecil которая так же доступна через NuGet. var assembly = Mono.Cecil.AssemblyDefinition.ReadAssembly("fileName"); var publicKey = assembly.Name.PublicKey;

Комментариев нет:

Отправить комментарий