Как ссылаться на конкретную DLL для функциональности в указанной DLL - PullRequest
0 голосов
/ 21 декабря 2018

Добрый день,

У меня есть приложение, которое я разработал для передачи файлов между двумя компьютерами ("сайт" и "сервер").Это приложение было настроено на целевой dotNet 3.5.Кроме того, я использую Renci.SshNet для обработки соединений между компьютерами и передачи указанных файлов.

Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что около 70% машин "сайта" не имеютстандартное dotNet и тоже довольно старое;таким образом, эти машины не поддерживают все необходимые функциональные возможности, так как внешняя DLL выполняет вызовы System.Threading.WaitHandle.WaitOne() и System.Threading.WaitHandle.WaitAny(WaitHandle[], Int32) и другие перегрузки этих методов.

Обходной путь, который у меня есть для этого, заключается в установке netfx20SP2 или netfx30SP1, но я не могу выполнить это обновление на всех машинах, поскольку они разбросаны по всей стране и имеют ограничения данных (пропускная способность и ограничение).

Возможно, я хочу внедрить загруженный мною System.Threading dll, а затем приложение должно использовать эти классы вместо этого, или, альтернативно, просто указать приложению использовать указанную dll.

Это вообще возможно, или вам нужно загрузить dll в GAC?А также, возможно ли будет «запустить» эту более высокую версию System.Threading в приложении, пока сама система находится в более низкой версии фреймворка.Что-то подсказывает мне, что лучше всего будет запустить установку пакета обновления, чтобы избежать ненужного кодирования, но я не совсем уверен, как к этому подойти.

Заранее благодарю за любую помощь / предложения, JD

1 Ответ

0 голосов
/ 28 декабря 2018

Чтобы разрешить выполнение приложения, которое, скажем, нацелено на .Net 4;в то время как на самой машине, скажем, установлен только .Net 3.5, можно перенаправить Windows, чтобы проверить локальный (исполняющий) каталог на наличие dll, который должен содержать требуемые символы, загруженные в память, вместо символов по умолчанию, которые загружаются при выполнении (по умолчанию будет установлен NetFx на машине - я считаю, что это самая высокая версия платформы, которая может быть найдена при загрузке при запуске или будет самой высокой доступной версией, которая ниже или равна целевой среде).

Содержимое этого файла (myApp.exe.local) игнорируется.Просто попросите Windows найти в этой папке соответствующие символы, и если она не найдена, система выполнит откат, чтобы попытаться загрузить эти символы из каталога NetFx.

Подробнее см. В Центре разработчиков Microsoft -Документы (ссылка прикреплена к следующему абзацу, который является копией-вставкой раздела этого документа).

Чтобы использовать перенаправление DLL, создайте файл перенаправления для своего приложения.Файл перенаправления должен быть назван следующим образом: App_name.local.Например, если имя приложения Editor.exe, файл перенаправления должен называться Editor.exe.local.Вы должны установить файл .local в каталог приложения.Вы также должны установить библиотеки DLL в каталог приложения.

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