Оригинальное название: Как я могу предотвратить загрузку нативной библиотеки DLL из приложения .NET?
Справочная информация:
My C # приложение включает каркас плагинов и универсальный загрузчик плагинов.
Загрузчик плагинов перечисляет каталог приложения, чтобы определить dll плагина (по сути, он ищет * .dll в настоящее время).
В том же каталоге приложения находится нативная (Windows, non-.net) dll, от которой, косвенно, зависит один из dll плагина.
Загрузчик плагинов вслепую предполагает, что native.dll - это DLL-библиотека сборки .NET, просто потому, что она проверяет только расширение файла. Когда он пытается загрузить собственную dll, выдается исключение:
"Не удалось загрузить файл или сборку« native.dll »или одну из ее зависимостей. Предполагалось, что модуль содержит манифест сборки.»
Я в основном создаю диагностический отчет, если загрузка плагина завершается неудачно, поэтому я стараюсь не заполнять этот журнал сообщениями о невозможности загрузки собственной dll (что я даже не хочу пытаться).
Вопрос:
Есть ли какой-нибудь вызов .NET API, который я могу использовать, чтобы определить, является ли двоичный файл сборкой .NET, чтобы я вообще не пытался загрузить нативную dll?
Возможно, в долгосрочной перспективе я переместу свои плагины в подкаталог, но сейчас я просто хочу обойти это, не включая жесткое кодирование имени "native.dll" внутри моего загрузчика плагинов.
Полагаю, я ищу какой-то статический вызов API Assembly.IsManaged (), который я пропустил .... предположительно, такого API не существует?