App.config только для чтения при отладке - PullRequest
0 голосов
/ 22 марта 2011

В настоящее время у меня возникла проблема, которую я не смог решить.

У меня есть приложение, где у меня есть этот код:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config");
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "App.config");
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString());

Файл конфигурации действительно называется App.config в папке приложения (я делаю это, потому что у меня два приложения читают / изменяют один и тот же файл конфигурации).

Когда я запускаю любой из них через отладчик Visual Studio, он правильно сообщает мне, что у меня 11 наборов приложений. Однако при запуске вне отладчика я получаю 0.

Что здесь может быть не так? Я на 100% уверен, что этот код работал в прошлом.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Я наконец смог решить это сам прямо сейчас.Решение состоит в том, чтобы получить доступ к настройкам конфигурации через

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
0 голосов
/ 22 марта 2011

Похоже, вы не передаете правильный путь к App.Config. Попробуйте вместо этого:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config");
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "App.config"); 
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString());

Обратите внимание на вызов Path.GetDirectoryName (). Ваш код получает местоположение к exe-файлу, а затем добавляет к нему «App.Config», который преобразуется в файл, который не существует.

...