C# 中是否有内置方法可以处理不使用 XML 的简单配置文件?或者也许有流行的免费图书馆?

我正在制作一个供非程序员使用的简单工具,并且我不想通过添加用于配置编辑的 UI 来使其复杂化。我只希望用户(对计算机足够熟悉)能够在记事本中打开配置文件并编辑/添加几行。这就是为什么我不想使用基于 XML 的配置文件。


编辑:谢谢大家的回复!是的,绑定简单的 ui 来编辑基于 xml 的配置并不难。但它并不总是合适的。例如,对于非 GUI 应用程序,或者对于非常简单的应用程序,您不想添加任何更多 ui 以保持最大程度的简单。编写自己的配置解析器甚至不难,用于键/对设置或由空行分隔的块或设置。但我只是想知道有什么可用的,因为在 google 上快速搜索只会给我很多关于使用基于 xml 的配置的页面。

我不是全职软件开发人员,通常会编写一些小工具,使我和同事的工作生活变得更加轻松,因此使用已知且经过测试的解决方案自然会简化该任务。

有帮助吗?

解决方案

我通常使用INI文件简单的配置。有一个很好的文章,它提供了原生的Windows的包装INI功能Kernel32中。

其他提示

您可以尝试我编写的名为库 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”]

您可以找到一个例子

您可以在这里抓住一个副本: https://github.com/jknight/DotNet.Config

我想我会选择花钱建立一个简单的编辑器,并保持用户从配置文件编辑业务的时间。否则,你可能最终不得不写很多代码来捕获所有的用户可以在系统中搞乱了配置文件注入可能的错误。当您控制文件格式,可以采取限制输入UI的优势,代码简单,我想。

不过,这取决于用户,你可以只选择一个每行按键分隔值约定。读取,在是足够简单的。

其中的一个第三方工具,我用有污垢简单的配置文件。它是具有如下形式的简单,自由形式的文本文件:

keyword [args]

有期望的每一行开始与上线之后,一个关键字和任何被简单地作为参数传递给关键字。它不具有键/值对的概念作为ARGS - 更像只是列出。空间,是该配置文件中的分隔符。也许不是每个实施工作,但它为一个。

绑定是非常简单和读/写从绑定的网格控件,用户可以利用他们的编辑XML文件,它肯定消除了许多,从一个简单的产生的格式问题“在记事本打开它”解决方案。

如果你的用户群是非常精明的,但只是没有开发,也许明文解决方案就足够了。正如我的同事常说的 - 没有必要把$ 100 $ 2节目。显然,这将取决于您的具体情况。

您可以使用YAML,但可用的C#库是相当不成熟。 YAML是一个子集JSON的,你也可以同样使用该相反,它提供各种各样的解析器,包括这一个:的 http://www.codeplex.com/Json ,该具有LINQ到JSON支持。

我通常只是结合的配置在网格控制或任何,让他们编辑应用程序内部的配置。如果你把一切都作为基本名称/值对没有太多的UI参与。

Win32 API 有一些方便的函数,可以通过 P/Invoke 轻松调用:

我真的不建议邀请/允许用户手动编辑配置文件,因为这可能会导致无法有效预测和预防的多种问题。我认为应对这种情况的最佳方法是创建一个配置文件编辑器,或者只是创建一个允许您保存设置的内置网格界面。这样,您就可以将其保存为任何格式,并避免不必要的麻烦。

至于以 INI 格式保存,您可以使用,正如其他答案所建议的那样, 妮妮 或者 Kernel32 中本机 Windows INI 函数的包装器. 。但是,如果您打算采用内置编辑器方法,则可以轻松地使用 XML。.NET Framework 的内置 XML 函数使用起来非常简单。

现在,虽然我强烈认为允许用户手动编辑配置文件是一个禁忌,但在某些情况下,如果用户组很小并且每个人都将接受如何编辑文件的专门培训,那么这可能是更好的解决方案。如果您想采用这种方法,我推荐 INI 文件,因为它们很容易手动编辑、读取、解析和写入。你应该尝试 图书馆 我在上面提到过这一点。

总之,我认为您确实应该考虑采用不同的方法,例如不允许用户手动编辑文件,而是提供内置编辑器,但是当然,如​​果您真的愿意,您可以采取手动编辑路线。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top