#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.
Комментариев нет:
Отправить комментарий