2013-05-02 3 views
2

Я хотел бы создать инструмент, который принимает. winmd (компонент Runtime Windows) и генерирует из него C# DLL (содержащий все общедоступные типы, определенные в компоненте).Автоматическое преобразование winmd в DLL

Насколько я понял, стандартные API .NET Reflection не могут работать в файлах .winmd, и для доступа к этой информации необходимо использовать Metadata Unmanaged APIs.

Вопрос: возможно ли построить сборку C# из информации, полученной из API метаданных?

Или еще лучше - есть ли инструмент (например, TLBIMP), который уже выполняет эту работу или что-то подобное?

+0

Просто используйте приличный дизассемблер. Декомпиляция на C# отлично работает в Reflector. Добавьте файл .winmd, также добавьте Windows.winmd. Щелкните правой кнопкой мыши + Экспорт исходного кода. –

+0

Конечно, в этом файле winmd не будет никакого кода, так как файлы winmd являются только метаданными, но вы можете увидеть определения методов, которые вы получите через intellisense. –

+0

Что вы пытаетесь сделать? Это может помочь изменить ответ. –

ответ

1

Файл метаданных Windows не содержит никакого кода - это всего лишь набор определений типов. И файл winmd является сборкой ECMA 335, поэтому он уже является C# DLL (просто переименуйте его из .winmd в .dll).

+0

Это не работает. Вы не можете загрузить winmd, как обычную сборку (получение NotSupportedException). –

+0

Я повторю свой вопрос сверху: что вы пытаетесь сделать? –

Смежные вопросы