Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Как задать другой путь к dll?

#c_sharp #net #visual_studio #dll


Есть один .exe и одна .dll.
Когда в References указываю путь к dll, ставлю Copy Local = false.
Так вот .exe пытаеться найти .dll у себя в bin\Debug и выбрасывает Exception: "Не
удается найти указанный файл."
Мне нужно, чтоб .exe тянул .dll из её родной директории, а не копировал .dll в сою
директорию и потом уже тянул её оттуда.    


Ответы

Ответ 1



Флаг "Copy Local" к этому не имеет отношения (он только говорит студии, надо ли копировать dll в папку выхода проекта). Программа пытается загрузить dll сначала из файловой системы (текущая директория, файлы которые попадают в path и т.д.), потом из GAG. Соответственно, в Вашем случае, Вы скорее всего используете референс напрямую на dll и эта dll не в GAG. Подробнее здесь и здесь. Вам в любом случае надо будет: 1. Либо делать copy local. 2. Либо класть dll в системные файлы. 3. Либо регистрировать dll в GAG. 4. Либо в самой программе указывать путь к поиску dll: AppDomain.CurrentDomain.AppendPrivatePath(@"bin\DLLs");

Ответ 2



Добавлю, что есть и другой путь: создать файл конфигурации .exe.config следующего содержания: где SubPath1, SubPath2 - поддиректории каталога с приложением. Тогда поиск будет происходить изначально в папке приложения, затем в поддиректории <Имя-сборки>\ и после этого в SubPath1, SubPath2.

Комментариев нет:

Отправить комментарий