使用 Visual C# 從應用程式組態檔儲存和擷取自定義資訊
本文介紹如何從組態檔儲存自定義資訊,以便稍後在運行時間期間由其相關聯的應用程式擷取。 當您必須定義與應用程式相關聯的數據時,這會很有説明。
注意
本文中的程序代碼是以 .NET Framework 2.0 和更新版本為目標。 若要知道類別適用的特定版本 ConfigurationManager
,請參閱 套用至 一節。
原始產品版本: Visual C#
原始 KB 編號: 815786
需求
下列清單概述您需要的建議硬體和軟體:
- Microsoft Windows
- Visual C#
本文假設您已熟悉下列主題:
- 可延伸標記語言 (XML)
- .NET 組態檔
建立可讀取組態檔的控制台應用程式
您可以將應用程式設定儲存在與應用程式相關聯的組態檔中。 組態檔會以 XML 格式儲存。
System.Configuration
.NET Framework 中的 和 System.Collections.Specialized
命名空間包含必要的類別,以在運行時間從 .NET 應用程式組態檔擷取資訊。
若要建立在運行時間讀取相關聯組態檔內容的控制台應用程式,請遵循下列步驟:
啟動 Visual Studio .NET 或 Visual Studio。
在 [檔案] 功能表上,指向 [新增],然後選取 [專案]。
選取 [項目類型] 下的 [Visual C#],然後選取 [範本] 下的 [控制台應用程式]。 將專案 命名為 ConConfig。 根據預設,Visual C# 會建立名為 Program 的類別。
注意
在 Visual Studio .NET 中,選取 [項目類型] 下的 [Visual C# 專案],然後選取 [範本] 下的 [控制台應用程式]。 將專案 命名為 ConConfig。 根據預設,Visual C# 會建立名為 Class1 的類別。
請確定 方案總管 視窗可見。 如果看不到,請按 CTRL+ALT+L 鍵組合。
在 方案總管 中,以滑鼠右鍵按兩下專案名稱,選取 [新增],然後選取 [新增專案]。
在 [ 新增專案 ] 清單中,選取 [ XML 檔案]。
在 [ 名稱] 文本框中,輸入 App.config,然後選取 [ 新增]。
您可以使用應用程式組態檔收集以索引鍵/值格式儲存的自訂應用程式設定。 您可以在相關聯組態檔的 區段中加入
<add>
元素<appSettings>
。 每個索引鍵/值組都有一個專案<add>
。 元素<add>
的格式如下:<add key="Key0" value="0" />
<appSettings>
將具有<add>
元素的<configuration>
區段新增至 和</configuration>
標籤之間的組態檔。例如,下列組態檔包含一個區段,指定三個
<appSettings>
索引鍵/值組:<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key0" value="0" /> <add key="Key1" value="1" /> <add key="Key2" value="2" /> </appSettings> </configuration>
在 方案總管 中,按兩下Program.cs以顯示程式代碼視窗。 將下列語句新增至您的程式代碼模組。
注意
這些語句必須出現在檔案中的任何其他語句之前。
using System.Configuration; using System.Collections.Specialized;
請遵循下列步驟,將參考新增至 System.Configuration.dll :
- 在 [專案] 功能表上,選取 [新增參考]。
- 在 [新增參考] 對話框中,選取 [.NET] 索引卷標。
- 尋找並選取的
System.Configuration
元件名稱。 - 選取 [確定]。
若要在組態檔的 區段中保存組態檔索引鍵
<appSettings>
的值,請在 區段中宣告字串變數Main
,如下所示:string sAttr;
若要從
<appSettings>
組態檔的 區段擷取指定索引鍵的值,請使用Get
ConfigurationManager 類別的 屬性方法AppSettings
。ConfigurationManager
類別位於System.Configuration
命名空間中。AppSettings.Get
當方法收到包含索引鍵的字串輸入參數時,應用程式會擷取與索引鍵相關聯的值。下列程式代碼會從相關聯的組態檔擷取 屬性的值
Key0
。 程式代碼接著會將此值放在字串變數中sAttr
。 如果這個值沒有索引鍵,則不會儲存在 中sAttr
。sAttr = ConfigurationManager.AppSettings.Get("Key0");
若要顯示應用程式在主控台視窗中擷取的值,請使用
Console.WriteLine
,如下所示:Console.WriteLine("The value of Key0 is "+sAttr);
您可以使用 屬性的
AppSettings
一個參考來擷取 區段中的所有索引鍵/值組<appSettings>
。 當您使用 屬性時AppSettings
,應用程式會傳回所有相關聯的索引鍵/值組。 這些配對會儲存在類型中NameValueCollection
。NameValueCollection
包含應用程式所擷取之每個索引鍵的索引鍵/值專案。NameValueCollection
類別位於System.Collections.Specialized
命名空間中。NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
的
AllKeys
NameValueCollection
屬性會參考字串數位,此陣列具有應用程式所擷取之每個索引鍵的專案。 使用 foreach 建構逐一查看數位,AllKeys
以存取應用程式擷取的每個索引鍵。 中的每個AllKeys
索引鍵專案都是字串數據類型。在
foreach
建構中,使用Console.WriteLine
在控制台視窗中顯示索引鍵及其相關聯的值。 應用程式進程的目前索引鍵位於s
中。 使用它作為 中的sAllNameValueCollection
索引,以取得其相關聯的值。foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
列出完整的程式碼清單
using System;
using System.Configuration;
using System.Collections.Specialized;
namespace ConConfig
{
class Program
{
static void Main(string[] args)
{
string sAttr;
// Read a particular key from the config file
sAttr = ConfigurationManager.AppSettings.Get("Key0");
Console.WriteLine("The value of Key0: " + sAttr);
// Read all the keys from the config file
NameValueCollection sAll;
sAll = ConfigurationManager.AppSettings;
foreach (string s in sAll.AllKeys)
Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
Console.ReadLine();
}
}
}
完整組態檔清單 (ConConfig.exe.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Key0" value="0" />
<add key="Key1" value="1" />
<add key="Key2" value="2" />
</appSettings>
</configuration>
確認其運作正常
按 F5 以執行程式碼。 主控台視窗應該會顯示 <appSettings>
相關聯組態檔區段中的索引鍵/值組,如下所示:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
疑難排解
組態檔會以 XML 格式儲存。 請確定您遵循所有 XML 語法規則。 請記住,XML 會區分大小寫。 如果 XML 格式不正確,或專案拼錯,您會收到
System.Configuration.Configuration
例外狀況。例如,如果您新增具有大寫 K 而非小寫 k 的專案
<add>
索引鍵屬性,或區<appSettings>
段顯示為<AppSettings>
(使用大寫 A 而不是小寫 a),您會收到錯誤訊息。組態檔必須儲存在與其相關聯應用程式的相同資料夾中。
您必須針對組態檔名稱使用下列語法:
<ApplicationName>。<ApplicationType.config>其中 <ApplicationName> 是應用程式的名稱。 <ApplicationType> 是應用程式的類型,例如
.exe
。 和.config
是必要的後綴。