Страницы

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

воскресенье, 21 октября 2018 г.

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

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


Ответ

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

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

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