我正在使用与我在应用程序其他部分中使用的代码几乎相同的代码从app.config文件中读取设置。它在WinXP和Win Server 2003上运行良好,当我在64位Windows 7上运行它时会生成一个异常:


  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下会产生错误。这是为32位目标编译的.NET 3.0项目。我在另一个模块中有相同的代码,并且在Windows 7下可以正常工作。

我很困惑,因为此代码在一个模块中起作用,但在另一个模块中不起作用,并且不会产生任何构建错误。

最佳答案

试试看

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


或看看

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

关于c# - 为什么config.Appsettings.Settings [“MySetting”]。Value在Windows 7中失败,但在其他版本中却失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7654780/

10-13 07:08