2009-10-30 76 views
4

在C#中是否有内置的方式来处理简单的配置文件而不是XML?或者也许有免费的图书馆?c#简单的非xml配置文件?

我正在做非程序员一个简单的工具来使用的,我不希望通过添加UI进行配置编辑它复杂化。我只想让用户(所有人都足够用计算机)足以在记事本中打开配置文件并编辑/添加几行。这就是为什么我不想使用基于XML的配置文件。


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

我不是全职SW开发人员和平时写的小工具,使我和我的同事我的生活在工作中一点点察,因此,使用已知的和测试的解决方案,当然,简化了任务。

+2

当然,你的意思是你**不**要通过添加UI进行配置编辑它复杂化。 – ChrisF 2009-10-31 00:01:22

+0

围绕C#选项表单对话框打包XML文件有多困难?我原以为会比编写额外的验证代码更容易,以确保用户没有错误地编辑配置文件。 - Blake7在0秒 – Blake7 2009-10-31 01:26:55

+0

ChrisF,这就是我的意思:)对不起,更正 – flamey 2009-10-31 08:51:33

回答

3

我通常使用INI文件进行简单的配置。有一个不错的article on The Code Project为Kernel32中的本地Windows INI函数提供了一个包装。

1

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

http://nini.sourceforge.net/

+0

INI文件非常简单,但如果“joe-user”正在编辑它们,则不能保证它们的格式正确。你会不会更好地提供自己的编辑器来写入XML或INI或WHATEVER文件?配置设置的动态性如何? – quip 2009-10-30 23:10:40

+0

我同意; Joe用户应该制作的唯一配置将以最佳方式集成在程序中,以某种方式... – gn22 2009-10-30 23:15:09

0

我通常只是绑定配置网格控件或什么,让他们编辑应用程序内的配置。如果将所有内容都保存为基本名称/值对,则不涉及太多的UI。

1

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

但是,这取决于用户,你可以只选择一个每行按键分隔值约定。阅读这个内容很简单。

我使用的第三方工具之一是一个简单的配置文件。它是具有形式简单,自由格式的文本文件:

keyword [args] 

该公司预计每行开始与上线后,一个关键字和任何被简单地当作参数传递给关键字。它没有键/值对的概念作为参数 - 更像是列表。空格是该配置文件的分隔符。可能不适用于每个实施,但它适用于那个。

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

如果您的用户群非常精明,但不是开发人员,也许纯文本解决方案就足够了。正如我的同事经常说的 - 无需在$ 2展示中放置100美元。显然,这取决于你的具体情况。

+1

无需在$ 2节目中放置$ 100 - 正是这种情况。即使我仍然可以编写简单的用户界面来编辑和使用xml,但我一直在思考这些问题。 – flamey 2009-10-31 08:50:23

0

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

至于以INI格式保存,您可以使用其他建议,Ninia wrapper for the native Windows INI functions in Kernel32。但是,如果您要采用内置编辑器方法,则可以轻松使用XML。 .NET Framework的内置XML功能非常易于使用。

现在,虽然我强烈地认为允许用户手动编辑配置文件是一个禁忌,在某些情况下,它可能是更好的解决方案,如果说用户组很小,并且每个人都会受到专门的培训编辑文件。如果你想采用这种方法,我推荐INI文件,因为它们很容易手动编辑,读取和解析,并写入。你应该尝试我上面提到的twolibraries。总之,我认为你真的应该考虑一种不同的方法,比如不允许用户手动编辑文件,而是提供一个内置的编辑器,当然,如果你真的想,你可以采取手动编辑路线。

1

您可以使用YAML,但是可用的C#库相当不成熟。 YAML是JSON的一个子集,您可以使用它,但它有很多可用的解析器,包括这一个:http://www.codeplex.com/Json,它具有LINQ to JSon支持。

1

你可以试试我写的名为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