Моя ситуация;
Я разрабатываю приложение-плагин, основанное на динамической загрузке сборок плагинов, более чем один пользователь может запускать приложение, размещенное на сервере. Приложение автоматически обновляет сборки плагинов с моего сервера обновлений в реальном времени при запуске. Таким образом, файлы плагина (и его вспомогательные библиотеки DLL) не должны быть заблокированы в файловой системе.
byte[] assemblyBytes = File.ReadAllBytes("asm-path");
var assembly = Assembly.Load(assemblyBytes);
как и ожидалось, не блокируя файл dll. но что, если dll, которую я загружаю, имеет статические эталонные dll? теперь они заблокированы в файловой системе.
назвать файлы, скажем так;
- APP.Exe — мое базовое приложение;
- PL1.dll — мой первый плагин, APP.exe загружает его в новый домен приложения.
- PL2.dll — мой второй плагин, APP.exe загружает его в новый домен приложения.
- PL1_S.dll — это статическая эталонная dll для плагина PL1.dll, загруженная в PL1 AppDomain.
- PL_COMMON — это статическая эталонная dll для плагинов PL1 и PL2, загружаемая доменами приложений PL1 и PL2.
PL1_S и PL_COMMON также не должны быть заблокированы в файле, как сборки PL1 и PL2.
Есть идеи, как это решить?