Добрый день. Есть приложение на C# в которое в процессе работы загружаются managed и unmanaged dll'ки. Необходимо реализовать динамическую перезагрузку этих dll'ок. C managed dll'ками проблем не возникает - я создаю дополнительный домен и загружаю их в него, а потом выгружаю весь домен. Unmanaged dll'ки, как я понимаю, с доменом не взаимодействуют и нужен другой механизм. Я пробовал освобождать их и загружать снова при помощи:
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern bool FreeLibrary(IntPtr hModule);
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string dllToLoad);
Но при попытке повторного использования классов из этих библиотек бросается исключение Access Violation. Подозреваю, что при использовании FreeLibrary библиотеки выгружаются, но в clr остаются указатели на них и при попытке использования бросается исключение.
Вопрос: есть ли какой-то способ осуществить выгрузку и повторную загрузку unmanaged dll и в дальнейшем использовать их.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей