Здравствуйте, Аноним, Вы писали:
А>Возникла потребность при нахождении 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 сборка?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, <Аноним>, Вы писали:
А>Как наиболее универсально и однозначно узнать про dll — это managed или нет?
Можно попытаться прочесть AssemblyName — если прочлось, значит managed код там присутствует.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте,
А>Возникла потребность при нахождении DLL-файла в определенной папке в системе подгружать ее как plugin(ну это грубо, но разные реализации могут быть как managed, так и unmanaged) и в зависимости от типа DLL применять разную логику загрузки(соответственно через Assembly.Load(..) или [DllImport()]). Как наиболее универсально и однозначно узнать про dll — это managed или нет?
А>И еще вопрос — для unmanaged dll возможно определить как она скомпилирована — в Debug или Release режиме? Есть ли какое-то WinAPI для установления image information?
А>Заранее спасибо.
Можно попробовать утилиту
PEverify
есть наработка, что бы вызывать ее из кода
simple-assembly-explorer
смотрите сразу вот
сюда