来自自定义文件的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