У меня есть родное приложение на C ++ (нет ничего необычного .Net, только C ++). Однако он использует некоторые необязательные сборки .Net через dll-файлы оболочки смешанного режима. Эти библиотеки загружаются с использованием задержки загрузки. Дело в том, что с обертками в смешанном режиме они должны быть полностью доверенными для загрузки. Поэтому, когда приложение пытается использовать dll, если его там нет или если ему не доверяют, вся вещь вылетает с неприятным сообщением об ошибке.
Но в моем случае, если речь идет о моем основном приложении, оно может жить без этих DLL-файлов. Поэтому мне нужен способ проверить, могут ли эти библиотеки быть загружены (файлы есть и являются доверенными). Для этого я попытался сделать фиктивный вызов одной из функций dll в блоке try catch, надеясь перехватить исключение, но он все равно завершился с исключением «module not found».
мы также пытались заменить фильтр неуправляемых исключений на собственный, но все равно не повезло.
мы также пытались использовать метод LoadLibrary, чтобы сначала загрузить DLL и проверить возвращаемое значение.
Но эта функция загружает Dll, даже если ей не доверяют, но вылетает, когда мы пытаемся выполнить вызов метода.
Я не думаю, что это нерешенная проблема. Насколько сложно проверить, можно ли использовать dll, не пытаясь загрузить ее и в конечном итоге привести к сбою? Есть идеи?