C# 简单的非xml配置文件?

C# 简单的非xml配置文件?,c#,configuration,configuration-files,C#,Configuration,Configuration Files,C#中是否有内置的方式来处理非XML的简单配置文件?或者有流行的免费图书馆 我正在制作一个供非程序员使用的简单工具,我不想通过添加用于配置编辑的UI使其复杂化。我只希望用户(对计算机都很熟悉)能够在记事本中打开配置文件并编辑/添加几行。这就是为什么我不想使用基于XML的配置文件 编辑:谢谢大家的回复!是的,绑定用于编辑基于xml的配置的简单ui并不困难。但这并不总是合适的。例如,对于非gui应用程序,或者对于非常简单的应用程序,您不想再添加任何ui来保持最大程度的简单。为密钥/对设置或块或设置

C#中是否有内置的方式来处理非XML的简单配置文件?或者有流行的免费图书馆

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


编辑:谢谢大家的回复!是的,绑定用于编辑基于xml的配置的简单ui并不困难。但这并不总是合适的。例如,对于非gui应用程序,或者对于非常简单的应用程序,您不想再添加任何ui来保持最大程度的简单。为密钥/对设置或块或设置(用空行分隔)编写自己的配置解析器并不困难。但我只是想知道有什么可用的,因为谷歌上的快速搜索给了我很多关于使用基于xml的配置的页面


我不是全职软件开发人员,通常会编写一些小工具,让我和我同事的工作生活有点像ezer,因此使用已知和经过测试的解决方案自然可以简化这项任务。

我喜欢Nini,它可以简化配置文件的XML使用,但也可以将其用于INI文件


我通常使用INI文件进行简单配置。有一个nice为内核32中的本机Windows INI函数提供了一个包装器。

我通常只是将配置绑定到一个网格控件或任何东西,让它们在应用程序内部编辑配置。如果您将所有内容都保留为基本的名称/值对,则不会涉及太多UI。

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


我想我会选择花时间构建一个简单的编辑器,让用户远离配置文件编辑业务。否则,您可能最终不得不编写大量代码来捕获用户可能通过弄乱配置文件而在系统中注入的所有可能错误。当您控制文件格式并可以利用限制输入的UI时,我认为代码更简单

但是,根据用户的不同,您可以选择每行一个键分隔符值约定。读这本书很简单

我使用的一个第三方工具有一个非常简单的配置文件。它是一个简单、自由格式的文本文件,其格式如下:

keyword [args]
它希望每一行都以关键字开头,其后的任何内容都被当作关键字的参数。它没有键/值对作为参数的概念,更像是列表。空格是该配置文件的分隔符。可能不适用于每个实现,但它适用于那个实现

绑定非常简单,从绑定的网格控件中读取/写入XML文件,用户可以将其用作编辑器,这无疑消除了简单的“在记事本中打开”解决方案所产生的许多格式问题


如果您的用户群相当精明,但不是开发人员,那么纯文本解决方案可能就足够了。正如我的同事经常说的那样——没有必要在一场2美元的演出中投入100美元。显然,这取决于您的具体情况。

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

至于以INI格式保存,您可以按照其他答案的建议使用或。但是,如果您打算采用内置编辑器方法,则可以轻松地使用XML。NET框架的内置XML函数使用起来非常简单

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


总之,我认为你应该考虑一种不同的方法,如不允许用户手动编辑文件,而是提供一个内置的编辑器,当然,如果你真的想要,你可以采用手工编辑路线。

你可以使用YAML,但是可用的C语言库是相当不成熟的。YAML是JSON的一个子集,您也可以使用它,它有各种各样的解析器可用,包括这一个:,它支持LINQ到JSON。

您可以尝试我编写的一个库,名为

它使用简单的基于文本的文件进行配置

配置保存在“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”]

你可以找到一个例子


您可以在此处获取副本:

INI文件非常简单,但如果“joe user”正在编辑它们,则不能保证它们的格式正确。提供自己的编辑器写入XML、INI或任何文件不是更好吗?配置设置的动态性如何?我同意;用户应该进行的唯一配置最好以某种方式集成到程序ui中……您的意思是不想通过添加ui进行配置编辑而使其复杂化。将XML文件包装在C#选项表单对话框中有多困难?我本以为那会