Попытка загрузить приложение с помощью отражения и получить сообщение об ошибке «Не удалось загрузить файл или сборку ... Система не может найти указанный файл». - PullRequest
0 голосов
/ 14 ноября 2008

Сборка, которую он пытается найти, не является корневой сборкой - это ссылочная, но она находится в той же папке, а Directory.GetCurrentDirectory () - это папка со всеми файлами в ней.

Я застрял - есть предложения?

Ответы [ 4 ]

3 голосов
/ 14 ноября 2008

Вы можете либо:

  1. Создайте новый AppDomain для загрузки сборки (и задайте для базового каталога AppDomain каталог, содержащий все сборки).
  2. Присоедините обработчик для AppDomain.AssemblyResolve, чтобы помочь CLR найти зависимости сборки.
  3. Возможно, вы сможете добавить соответствующий каталог в список путей для проверки. Тем не менее, он должен находиться где-то в каталоге вашего приложения. Для получения дополнительной информации см. Элемент probe .
0 голосов
/ 01 марта 2018

Выполнение программы из папки, в которой находится указанная dll, также может решить проблему.

0 голосов
/ 14 ноября 2008

Если вы используете assembly.loadfrom , вы можете указать путь к файлу сборки.

Контекст загрузки позволяет сборка загружаться с пути не включен в зондирование, и все же позволяет зависимости на этом пути можно найти и загружен, потому что путь информация поддерживается контекст.

0 голосов
/ 14 ноября 2008

Вы можете попробовать использовать что-то вроде этого

string myDll = string.Empty;
string location = Assembly.GetExecutingAssembly().Location;
if (location != null)
{
    myDll = string.Format(@"{0}\my.assembly.name.dll", location.Substring(0, location.LastIndexOf(@"\")));
}

Это должно получить физический каталог, в котором работают сборки. Это может быть во временных каталогах Windows .NET. Однако, поскольку файлы находятся на одном уровне, они должны существовать там рядом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...