Определить managed или unmanaged DLL
От: Аноним  
Дата: 25.01.12 21:33
Оценка:
Здравствуйте,
Возникла потребность при нахождении DLL-файла в определенной папке в системе подгружать ее как plugin(ну это грубо, но разные реализации могут быть как managed, так и unmanaged) и в зависимости от типа DLL применять разную логику загрузки(соответственно через Assembly.Load(..) или [DllImport()]). Как наиболее универсально и однозначно узнать про dll — это managed или нет?
И еще вопрос — для unmanaged dll возможно определить как она скомпилирована — в Debug или Release режиме? Есть ли какое-то WinAPI для установления image information?

Заранее спасибо.
Re: Определить managed или unmanaged DLL
От: TK Лес кывт.рф
Дата: 26.01.12 05:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Возникла потребность при нахождении DLL-файла в определенной папке в системе подгружать ее как plugin(ну это грубо, но разные реализации могут быть как managed, так и unmanaged) и в зависимости от типа DLL применять разную логику загрузки(соответственно через Assembly.Load(..) или [DllImport()]). Как наиболее универсально и однозначно узнать про dll — это managed или нет?

А>И еще вопрос — для unmanaged dll возможно определить как она скомпилирована — в Debug или Release режиме? Есть ли какое-то WinAPI для установления image information?

Можно почитать тут: http://msdn.microsoft.com/en-us/magazine/bb985026.aspx и http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

PS
Что будете делать если это mixed сборка?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Определить managed или unmanaged DLL
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.01.12 18:32
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как наиболее универсально и однозначно узнать про dll — это managed или нет?


Можно попытаться прочесть AssemblyName — если прочлось, значит managed код там присутствует.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re: Определить managed или unmanaged DLL
От: LastExile Украина  
Дата: 27.01.12 12:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте,

А>Возникла потребность при нахождении DLL-файла в определенной папке в системе подгружать ее как plugin(ну это грубо, но разные реализации могут быть как managed, так и unmanaged) и в зависимости от типа DLL применять разную логику загрузки(соответственно через Assembly.Load(..) или [DllImport()]). Как наиболее универсально и однозначно узнать про dll — это managed или нет?
А>И еще вопрос — для unmanaged dll возможно определить как она скомпилирована — в Debug или Release режиме? Есть ли какое-то WinAPI для установления image information?

А>Заранее спасибо.


Можно попробовать утилиту
PEverify

есть наработка, что бы вызывать ее из кода
simple-assembly-explorer
смотрите сразу вот сюда
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.