Dot Локальный файл для решения проблем с DLL Hell? - PullRequest
5 голосов
/ 28 сентября 2010

Я прочитал, что размещение пустого файла с именем <AppName>.exe.local в каталоге приложения приведет к тому, что приложение будет сначала искать в этом каталоге DLLs и OCXs, чтобы избежать проблем с конфликтами DLLs и OCXs найдено в другом месте системы.

Но разве приложение сначала не заглядывает в каталог приложения?Какой эффект имеет файл .local на самом деле?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

Если честно, я никогда раньше не слышал о схеме .local, но быстрый поиск вызвал эту статью , которая вполне объясняет это:

Для приложения foo.exe, если существует файл foo.exe.local, Windows сначала проверяет каталог приложения foo.exe, а затем запускает обычный поиск DLL. Чтобы смягчить проблему с COM, перенаправление применяется как для загрузки полного пути DLL, так и для частичной загрузки имени.

Похоже, что файл .local сначала выполняет поиск даже по абсолютному пути к каталогу приложения, тогда как обычно абсолютные пути не меняются, и только относительные пути следуют за порядком поиска DLL .

1 голос
/ 28 сентября 2010

Приложения могут зависеть от конкретного версия общей библиотеки DLL и начать не удается, если другое приложение установлен с более новым или старым версия той же DLL. Есть два способы гарантировать, что ваше приложение использует правильную DLL: перенаправление DLL и бок о бок компоненты. Разработчики и администраторы должны использовать перенаправление DLL для существующих приложения, потому что это не требуют каких-либо изменений в приложение. Если вы создаете новый приложение или обновление приложения и хотите изолировать ваше приложение от потенциальных проблем, создать параллельный компонент.

Ссылка: Перенаправление библиотеки Dynamic-Link

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