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