Dll перенаправление не работает в C #, чтобы иметь дело с dll-адом с точечным локальным файлом (appname.exe.local) - PullRequest
0 голосов
/ 15 августа 2011

Раньше я успешно тестировал несколько версий кода, не беспокоясь о зависимости dll, создав нулевой байт файл application_name.exe.local в папке, содержащей новую версию приложения.Однако мы должны перейти на C #, и эта техника больше не работает.Нужно ли что-то еще (кроме файла .local), чтобы Cll-библиотеки сначала смотрели на текущую папку, а затем отправлялись в погоню за другими dll-файлами в расположении приложения по умолчанию?

1 Ответ

0 голосов
/ 15 августа 2011

Вы всегда можете подключиться к событию AppDomain.AssemblyResolve, как подсказывает Tejs:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

...

public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    Assembly AlreadyLoaded=AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(x => x.FullName == args.Name);
    if(AlreadyLoaded==null)
        return Assembly.LoadFile(Path to corresponding DLL);
}

Это не идеально (может потребоваться загрузить библиотеки DLL в любой каталог, в котором вы хотите выполнить поиск, а затем заменить сборку.LoadFile строка с поиском этих DLL), но вы должны иметь возможность изменить это, чтобы работать.Надеюсь, в любом случае.

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