2009-10-30 72 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