在c#中读取和写入自定义配置

时间:2013-01-19 01:54:33

标签: c# configuration-files

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

4 个答案:

答案 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);