C#中是否有一种内置方式可以处理不使用XML的简单配置文件?或者也许有流行的免费图书馆?
我正在为非程序员使用一个简单的工具,我不想通过添加用于配置编辑的UI来使其复杂化。我只是想让用户(对计算机都足够舒服)才能在记事本中打开配置文件并编辑/添加几行。这就是为什么我不想使用基于XML的配置文件。
我不是全职的开发人员,而且通常会编写一些小工具,让我和我的同事在工作中的生活变得更加轻松,因此使用已知且经过测试的解决方案,自然会简化这项任务。
答案 0 :(得分:3)
我通常使用INI文件进行简单配置。有一个很好的article on The Code Project,它为Kernel32中的本机Windows INI函数提供了一个包装器。
答案 1 :(得分:2)
您可以尝试我编写的名为DotNet.Config的库。
它使用简单的基于文本的文件进行配置。
配置保存在'config.properties'文件中,如下所示:
size=12
dateTime=1/12/2014
name=Terry Tester
color=Blue
items.A=hello list
items.B=guten tag list
items.C=bonjour list
numbers.X=10
numbers.Y=20
numbers.Z=30
它包括一个方便的加载器,它根据命名约定(包括将设置组加载到通用列表中)直接将设置转换并应用于成员变量。
或者您可以通过调用以下方式获取设置:
AppSettings.Retrieve [ “mySetting”]
您可以找到示例here。
您可以在此处获取副本:https://github.com/jknight/DotNet.Config
答案 2 :(得分:1)
我喜欢Nini,它简化了使用XML配置文件,但您也可以将它用于INI文件。
答案 3 :(得分:1)
我认为我会选择花时间构建一个简单的编辑器,让用户远离配置文件编辑业务。否则,您可能最终必须编写大量代码来捕获用户可能通过弄乱配置文件而在系统中注入的所有可能错误。当你控制文件格式并且可以利用限制输入的UI时,我认为代码更简单。
但是,根据用户的不同,您可以选择每行一次的密钥分隔符值约定。阅读它很简单。
我使用的第三方工具之一有一个简单的配置文件。它是一个简单的自由格式文本文件,其格式为:
keyword [args]
它希望每一行都以一个关键字开头,之后的任何内容都只是作为关键字的参数。它没有键/值对的概念作为args - 更像是列表。空格是该配置文件的分隔符。可能不适用于每个实现,但它适用于那个。
绑定非常简单,从绑定网格控件读取/写入XML文件,用户可以将其用作编辑器,它肯定消除了简单的“在记事本中打开”解决方案中出现的许多格式问题。 / p>
如果您的用户群非常精明,但不是开发人员,那么明文解决方案就足够了。正如我的同事经常说的那样 - 没有必要在$ 2节目中投入100美元。显然,这取决于你的具体情况。
答案 4 :(得分:1)
您可以使用YAML,但可用的C#库相当不成熟。 YAML是JSON的一个子集,您也可以使用它,它可以使用各种各样的解析器,包括这个:http://www.codeplex.com/Json,它支持LINQ to JSon。
答案 5 :(得分:0)
我通常只是将配置绑定到网格控件或其他任何东西,然后让它们编辑应用程序内的配置。如果您将所有内容保持为基本名称/值对,则涉及的UI不多。
答案 6 :(得分:0)
Win32 API有一些方便的功能,可以通过P / Invoke轻松调用:
答案 7 :(得分:0)
我并不真的建议邀请/允许用户手动编辑配置文件,因为这可能会导致许多无法有效预测和阻止的问题。我认为解决这种情况的最佳方法是创建配置文件的编辑器,或者只创建允许您保存设置的内置网格界面。这样,您可以将其保存为任何格式,避免不必要的困难。
至于以INI格式保存,您可以像其他建议一样使用Nini或a wrapper for the native Windows INI functions in Kernel32。但是,如果您要采用内置编辑器方法,则可以轻松使用XML。 .NET Framework的内置XML函数非常易于使用。
现在,虽然我强烈认为允许用户手动编辑配置文件是禁止的,但在某些情况下,它可能是更好的解决方案,如果说用户组很小并且每个人都将接受专门培训如何编辑文件。如果你想采用这种方法,我推荐INI文件,因为它们很容易手动编辑,读取和解析,以及写入。您应该尝试上面提到的two libraries。
总之,我认为你真的应该考虑一种不同的方法,比如不允许用户手动编辑文件,而是提供内置编辑器,当然,如果你真的想要,你可以采取手动编辑路线。