来自自定义文件的AppSettings

我正在努力配合.NET 2.0中的配置和设置类

如果以下内容包含在名为app.config的文件中

      

我知道我可以访问appSetting by

 // this returns "Hello World!" ConfigurationManager.AppSettings["Foo"] 

但是,如果文件名为app1.config (或任何其他名称),则无法访问appSetting。 只要我理解,使用ConfigurationManager.OpenExeConfiguration我应该阅读自定义配置设置文件。

 Configuration conf = ConfigurationManager.OpenExeConfiguration(@"..\..\app1.config"); // this prints an empty string. Console.WriteLine(conf.AppSettings.Settings["Foo"]); 

但是conf.AppSettings.Settings["Foo"]返回一个空字符串。

我也试过以下代码但没有成功

 ExeConfigurationFileMap exeFileMap = new ExeConfigurationFileMap(); exeFileMap.ExeConfigFilename = System.IO.Directory.GetCurrentDirectory() + "\\App1.config"; Configuration myConf = ConfigurationManager.OpenMappedExeConfiguration (exeFileMap, ConfigurationUserLevel.None); // returns empty string as well Console.WriteLine(myConf.AppSettings.Settings["Foo"]); 

如何从不称为app.config的文件中读取设置?

我创建了自定义文件myCustomConfiguration ,并将其属性Copy to Output Directory更改为true

       

在CS文件中

 static void Main(string[] args) { var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myCustomConfiguration.config"); Dictionary dictionary = GetNameValueCollectionSection("appSettings", filePath); //To get your key do dictionary["Foo"] Console.WriteLine(dictionary["Foo"]); Console.ReadLine(); } private static Dictionary GetNameValueCollectionSection(string section, string filePath) { var xDoc = new XmlDocument(); var nameValueColl = new Dictionary(); var configFileMap = new ExeConfigurationFileMap { ExeConfigFilename = filePath }; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); string xml = config.GetSection(section).SectionInformation.GetRawXml(); xDoc.LoadXml(xml); XmlNode xList = xDoc.ChildNodes[0]; foreach (XmlNode xNodo in xList.Cast().Where(xNodo => xNodo.Attributes != null)) { nameValueColl.Add(xNodo.Attributes[0].Value, xNodo.Attributes[1].Value); } return nameValueColl; } 

虽然这是有效的,但我也在寻找更好的方法。

您应该使用设置文件,使用起来更方便,保存和加载方法,您可以根据需要命名。 例如。 我的Settings-File被称为“EditorSettings.settings”,我访问它的属性如下:

 MyNamespace.MyProject.EditorSettings.Default.MyProperty1