Загрузка сборки во время выполнения не выполняется, когда я копирую DLL после запуска программы

Во время выполнения я загружаю сборку с

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]

8
задан starblue 21 December 2010 в 19:07
поделиться