Почему config.Appsettings.Settings ["MySetting"]. Значение сбой в Windows 7, но не в других версиях - PullRequest
2 голосов
/ 05 октября 2011

Я читаю настройки из файла app.config, используя код, почти идентичный тому, который я использовал в других частях приложения. Он отлично работает под WinXP и Win Server 2003, когда я запускаю его под Windows 7 64-битной, он генерирует исключение:

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

string exePath = System.IO.Path.Combine(Environment.CurrentDirectory, applicationName);

// Get the configuration file. The file name has this format appname.exe.config.

System.Configuration.Configuration utilConfig = ConfigurationManager.OpenExeConfiguration(exePath);
string fileName = utilConfig.AppSettings.Settings["MsgAlertWav"].Value; //<<Fails here

Это упрощенный код, но он генерирует ошибку под Windows 7. Это проект .NET 3.0, скомпилированный для 32-битной цели. У меня есть тот же код в другом модуле, и он прекрасно работает под Windows 7.

Я озадачен, так как этот код работает в одном модуле, но не в другом и не генерирует ошибок сборки.

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

System.Configuration.ConfigurationSettings устарела и предназначена для решений на платформах версий 1.0 и 1.1.

Поскольку вы используете 3.0, вам следует использовать System.Configuration.ConfigurationManager.Довольно много того же, имеет то же использование

System.Configuration.ConfigurationManager["MsgAlertWav"];

hth, -covo

0 голосов
/ 05 октября 2011

Попробуйте с

System.Configuration.ConfigurationSettings.AppSettings["MsgAlertWav"];

или посмотрите на

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
...