Проекты

Memory Plugin Provider

Весь код провайдера, идентичен коду провайдера BasicFileProvider. За исключением чтения сборки с файловой системы в массив байт, а затем загрузка в текущий домен в качестве сборки.

Плагин использует аргумент коммандной строки SAL_Path для поиска плагинов в отличной от корневой папки.

В качестве разделителя, для массива путей, используемых в аргументе коммандной строки SAL_Path, используется символ «;». В случае отсутствия аргумента коммандной строки SAL_Path, для поиска плагинов используется текущая директория запуска исполняемого файла хоста.

После загрузки всех плагинов из папки, на папку добавляется мониторинг обновления старых плагинов или появления новых плагинов, так что при появлении новых плагинов в папке, они будут загружены в автоматическом режиме. При обновлении загруженного плагина, будет стёрта ссылка на старый плагин и появится ссылка на новый плагин.

Внимание

В довесок к возможностям появления DLL Hell, при наличии двух одинаковых системных сборок в разных папках загрузки плагинов, сборки написанные на Managed C++ подгружаться из памяти не будут. Это связано с ограничением при работе в Win32 API функциями LoadLibrary, которые требуют физического присутствия сборки на диске.

Теги:

Скачать

Родительские файлы