Во время выполнения я загружаю сборку с
Assembly assembly = Assembly.LoadFrom(@"c:\MyFolder\MyAssembly.dll");
Это работает, если сборка находится в этой папке.
Если сборка НЕ находится в папке, я, конечно, получаю исключение, сообщающее, что сборка или одна из ее зависимостей не найдены.
Я ловлю исключение и отображаю сообщение об ошибке для пользователя. Программа продолжает работать.
Если я сейчас скопирую отсутствующую сборку в папку «c: \ MyFolder», пока программа еще работает, и снова активирую функцию, которая выполняет строку выше , я получаю то же исключение - System.IO.FileNotFoundException - еще раз, что сборка не может быть найдена, хотя DLL теперь находится в папке .
Если я перезапускаю приложение, оно работает, и сборка найдена. Это также работает, если я запускаю приложение и копирую DLL в папку, прежде чем попытаться загрузить сборку в первый раз после запуска приложения.
Таким образом, проблема, похоже, связана с первым неудачным вызовом Assembly.LoadFrom
.
В чем может быть причина такого поведения и что я могу сделать, чтобы решить проблему?
Заранее спасибо за помощь!
Редактировать: еще одна деталь:
Я добавил File.Exists
тест:
string filename = @"c:\MyFolder\MyAssembly.dll";
bool test = File.Exists(filename);
Assembly assembly = Assembly.LoadFrom(filename);
test
возвращает true
, но Assembly.LoadFrom
выдает FileNotFoundException
.