3

c# 中是否有一个库可以让您读取和写入配置或某种配置文件?

我不是在谈论 app.config,而更像是一个 custom.config,类似于 ol .ini 文件,其中内置了 lib/functions 来读取/写入配置文件。

我当然可以自己写,但想知道是否存在一些常见的库或方法来做到这一点......

我知道自定义配置部分,但不想走那条路。

解决方案

我找到了我要找的东西。这将起作用:

http://www.codeproject.com/Articles/14465/Specify-a-Configuration-File-at-Runtime-for-aC-Co

4

4 回答 4

9

我会将我的自定义配置作为 a 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);
    }
}
于 2013-01-19T01:58:41.323 回答
0

如果您只需要非常简单的键值对(例如旧的 .ini 或 .cfg 文件),那么还有来自 ApplicationData.Current 的本地存储:

ApplicationData.Current.LocalSettings.Values["test"] = "Setting Value"; 
string t = (string)ApplicationData.Current.LocalSettings.Values["test"]; 

但是,这与单个应用程序相关联,不确定它处理多线程/多实例问题的能力如何。

于 2013-01-19T04:18:24.007 回答
0

为什么不使用设置设计器(Settings.settings项目中的文件)?

于 2013-01-19T05:06:11.693 回答
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); 
于 2014-05-11T06:34:56.857 回答