c#中是否有lib可以读取和写入配置或某种配置文件?
我不是在谈论app.config,而是更像是类似于ol .ini文件的custom.config,其中内置了lib /函数来读取/写入配置文件。
我当然可以写自己的,但想知道是否存在一些常用的lib或方法来做到这一点......
我知道自定义配置部分,但不希望采用该路线。
解决方案
我找到了我要找的东西。这将有效:
http://www.codeproject.com/Articles/14465/Specify-a-Configuration-File-at-Runtime-for-a-C-Co
答案 0 :(得分:8)
我将自定义配置设为class
,然后使用XmlSerializer
来读取和写入配置值。
public class MyConfig
{
const string configPath = @"...";
public string Setting1 { get; set; }
// ...
public static MyConfig Load()
{
var serializer = new XmlSerializer(typeof(MyConfig));
using (var reader = new StreamReader(configPath))
return (MyConfig)serializer.Deserialize(reader);
}
public void Save()
{
var serializer = new XmlSerializer(typeof(MyConfig));
using (var writer = new StreamWriter(configPath))
serializer.Serialize(writer, this);
}
}
答案 1 :(得分:0)
如果你需要的只是简单的键值对(比如旧的.ini或.cfg文件),那么ApplicationData.Current还有本地存储:
ApplicationData.Current.LocalSettings.Values["test"] = "Setting Value";
string t = (string)ApplicationData.Current.LocalSettings.Values["test"];
然而,这与单个应用程序绑定,不确定它将如何处理多线程/多实例问题。
答案 2 :(得分:0)
为什么不直接使用项目中的设置设计器(Settings.settings
文件)?
答案 3 :(得分:0)
如果有人确实需要保存对自定义配置文件的更改(在本例中为与dll程序集同名的配置文件):
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().GetName().Name + ".dll.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
//... make modification (as you would for any app.config, etc...)
config.Save(ConfigurationSaveMode.Modified);