Мне нужно загрузить и выгрузить DLL, как только я закончу анализ файла - PullRequest
0 голосов
/ 23 мая 2019

У меня есть центральный механизм синтаксического анализа, который динамически создает имя DLL, которую он хочет загрузить (objpath), и вызывает следующий код. У меня есть серия парсеров (разных типов файлов и разных версий), каждый из которых находится в отдельной DLL.

Моя проблема в том, что мне нужно выгрузить dll движка после заполнения возвращаемой переменной. Я провел небольшое исследование, но не смог найти результат. Код от парсинга двигателя. objpath - это имя и путь библиотеки DLL, необходимой для анализа рассматриваемого файла

var engine = Assembly.LoadFile (objpath); var instance = engine.CreateInstance (obj.TypeName + ".Engine", true, BindingFlags.CreateInstance, null, null, null, null); var fileImport = (IFileImport) instance; return = fileImport.Import (имя файла);

Мне нужно выгрузить их, когда они не используются, потому что я делаю обновления и часто добавляю новые парсеры, и в настоящее время, когда парсер используется, он остается открытым и там не может быть перезаписан

1 Ответ

0 голосов
/ 23 мая 2019

Вы должны быть в состоянии загрузить сборку, используя AssemblyLoadContext.

Когда вы закончите сборку, вы можете позвонить Unload на AssemblyLoadContext. Вы должны быть уверены, что никакие типы из вашей сборки не используются, иначе вы получите InvalidOperationException.

...