Привет,
У меня есть приложение, которое позволяет пользователям импортировать созданные ими библиотеки (DLL-библиотеки .NET), если библиотека соответствует конкретным рекомендациям, которые я им дал (используйте мое пространство имен, украшайте методы с помощью моего атрибута и т. Д.). ). Я копирую каждый пользовательский lib во внутренний каталог, а затем загружаю его в свой собственный домен приложения (чтобы пользователь мог выгрузить его при желании). Поэтому у меня есть ограничение: нельзя загружать две библиотеки с одинаковым именем.
Я бы хотел снять это ограничение, не помещая каждый пользовательский lib в уникальный подкаталог моего внутреннего каталога. Я попытался переименовать пользовательскую библиотеку lib, когда копировал ее во внутренний каталог. Например, если пользователь говорит об импорте c: \ SomeLib.dll, и я обнаружил, что у меня уже есть загруженная библиотека с именем SomeLib.dll, я копирую новый файл в ... \ MyInternalDir \ SomeLib2.dll. Однако, когда я делаю это, моя команда загрузки:
(ISomeInterface) iSomeLib = someAppDomain.CreateInstanceAndUnwrap(
"SomeLib2",
"SomeNamespace.SomeClassInSomeLib");
выдает исключение:
FileLoadException: не удалось загрузить файл
или сборка "MyLib2" или один из его
зависимостей. Расположенная сборка
определение манифеста не соответствует
сборка ссылка. (Исключение из
HRESULT: 0x80131040)
Есть ли какой-нибудь способ сказать .NET: "Не обращайте внимания на тот факт, что имя файла было изменено с момента его компиляции"?