Файл .config не загружен из рабочего каталога - PullRequest
0 голосов
/ 06 апреля 2010

Я новичок в использовании файлов .config, до недавнего времени работал над приложениями, которые используют файлы .INI и реестр. Я вижу поведение в VS2008, которое я не ожидал, и задаюсь вопросом, является ли оно ожидаемым.

Когда я настраиваю параметр рабочего каталога в IDE VS2008 для моего приложения Foo.exe , я бы предположил, что Foo.exe.config будет загружен из этого рабочего каталога , Это не; он загружается из каталога .. \ bin \ Debug, даже если у меня в этом рабочем каталоге есть файл Foo.exe.config . Если я проверяю Environment.CurrentDirectory во время применения конфигурации, устанавливая точку останова, я вижу, что это .. \ bin \ Debug. Когда я проверяю Environment.CurrentDirectory после события Loaded моего основного пользовательского интерфейса, для него устанавливается рабочий каталог, который я применил в IDE.

Это правильно? (Почему?)

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

Да, это правильное поведение, которое вы видите. Исполняемый файл сначала ищет файл .config в том же каталоге, что и файл .exe. Не уверен, где он выглядит после этого, но если он находит его там, он использует тот. Я проведу еще несколько исследований и посмотрю, будут ли другие пути искать по умолчанию.


См. Здесь

По умолчанию приложение файл конфигурации по умолчанию appdomain (и другие домены приложений для v1.1 и позже) находится в процессе каталог exe и назван так же, как процесс exe + ".config". Это истина, даже если этот exe неуправляемый. Также обратите внимание, что файл web.config app.config - ASP.NET устанавливает это как файл конфигурации для вашего домена приложения.

Чтобы изменить файл конфигурации, установите AppDomainSetup.ConfigurationFile to новое местоположение и передать это AppDomainSetup для вашего звонка AppDomain.CreateDomain (). Затем беги весь код, требующий, чтобы Конфигурация приложения из этого новый домен приложения.

Обратите внимание, что вы не сможете выбрать версию CLR, установив Файл конфигурации - в этот момент, CLR уже будет запущен, и на один процесс может быть только один.

Файлы конфигурации приложения за AppDomain. Таким образом, вы можете установить config ’, используя метод выше, но это означает, что он будет использоваться для весь домен приложения, и он только получает один.

0 голосов
/ 06 апреля 2010

Конфигурация по умолчанию загружается из того же каталога, в котором находится приложение. В среде отладки это \ bin \ Debug. Однако ваш проект должен развертывать этот конфиг для вас, если он является частью вашего проекта.

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