使用 Visual C# 從應用程式組態檔儲存和擷取自定義資訊

本文介紹如何從組態檔儲存自定義資訊,供您稍後在運行時間由其相關聯的應用程式擷取。 當您必須定義與應用程式相關聯的數據時,這會很有説明。

原始產品版本: Visual C#
原始 KB 編號: 815786

需求

下列清單概述您需要的建議硬體和軟體:

  • Microsoft Windows
  • Visual C#

本文假設您已熟悉下列主題:

  • 可延伸標記語言 (XML)
  • .NET 組態檔

建立可讀取組態檔的控制台應用程式

您可以將應用程式設定儲存在與應用程式相關聯的組態檔中。 組態檔會以 XML 格式儲存。

System.Configuration .NET Framework中的 和 System.Collections.Specialized 命名空間包含必要的類別,以便在運行時間從 .NET 應用程式組態檔擷取資訊。

若要建立主控台應用程式,以在運行時間讀取相關聯組態檔的內容,請遵循下列步驟:

  1. 啟動 Visual Studio .NET 或 Visual Studio。

  2. [檔案] 功能表中,指向 [新增],然後選取 [專案]

  3. 選取 [項目類型] 下的 [Visual C#],然後選取 [範本] 底下的 [控制台應用程式]。 將專案命名 為 ConConfig。 根據預設,Visual C# 會建立名為 Program 的類別。

    注意事項

    在 Visual Studio .NET 中,選取 [項目類型] 下的 [Visual C# 專案],然後選取 [範本] 底下的 [控制台應用程式]。 將專案命名 為 ConConfig。 根據預設,Visual C# 會建立名為 Class1 的類別

  4. 請確定 方案總管 視窗是可見的。 如果看不到,請按 CTRL+ALT+L 按鍵組合。

  5. 方案總管 中,以滑鼠右鍵按兩下專案名稱,選取 [新增],然後選取 [新增專案]

  6. 在 [ 新增專案] 清單中,選取 [XML 檔案]

  7. 在 [ 名稱] 文本框中,輸入 App.config,然後選取 [ 新增]

  8. 您可以使用應用程式群組態檔來收集以索引鍵/值格式儲存的自訂應用程式設定。 您可以在相關聯組態檔的 區段中<appSettings>包含<add>專案。 每個索引鍵/值組都有一個專案 <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>
    
  9. 方案總管 中,按兩下 [Program.cs] 以顯示程式代碼視窗。 將下列語句新增至您的程式代碼模組。

    注意事項

    這些語句必須出現在檔案中的任何其他語句之前。

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. 依照下列步驟新增 對System.Configuration.dll 的參考:

    1. 在 [ 專案] 功能表上,選取 [ 新增參考]
    2. 在 [ 新增參考] 對話框中,選取 [.NET] 索引 卷標。
    3. 尋找並選取的 System.Configuration元件名稱。
    4. 選取 [確定]
  11. 若要保存組態檔區段中 <appSettings> 組態檔索引鍵的值,請在 區段中 Main 宣告字串變數,如下所示:

    string sAttr;
    
  12. 若要從<appSettings>組態檔的 區段擷取指定索引鍵的值,請使用 Get 類別之 屬性的 ConfigurationManager 方法AppSettings。 類別 ConfigurationManager 位於 命名空間中 System.ConfigurationAppSettings.Get當方法收到包含索引鍵的字串輸入參數時,應用程式會擷取與索引鍵相關聯的值。

    下列程式代碼會從相關聯的 Key0 組態檔擷取 屬性的值。 然後程式代碼會將這個值放在字串變數中 sAttr 。 如果這個值的索引鍵不存在,就不會在 中 sAttr儲存任何專案。

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. 若要顯示應用程式在主控台視窗中擷取的值,請使用 Console.WriteLine ,如下所示:

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. 您可以使用屬性的 AppSettings 一個參考來擷取區段中 <appSettings> 的所有索引鍵/值組。 當您使用 屬性時 AppSettings ,應用程式會傳回所有相關聯的索引鍵/值組。 這些配對會儲存在類型中 NameValueCollection 。 包含 NameValueCollection 應用程式所擷取之每個索引鍵的索引鍵/值專案。 類別 NameValueCollection 位於 命名空間中 System.Collections.Specialized

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. 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();
        }
    }
}

注意事項

此程式代碼是以 .NET Framework 2.0 為目標。 如果您使用 .NET Framework 1.0 或 .NET Framework 1.1,請將 類別的所有實體ConfigurationManager變更為 ConfigurationSettings

完整的組態檔清單 (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 的專案索引鍵屬性 <add> ,而不是小寫 k,或如果 <appSettings> 區段顯示為 <AppSettings> 具有大寫 A 的 (,而不是小寫) ,您會收到錯誤訊息。

  • 組態檔必須儲存在與其相關聯應用程式相同的資料夾中。

  • 您必須針對組態檔名稱使用下列語法:
    <ApplicationName>。<ApplicationType>.config

    其中 <ApplicationName> 是應用程式的名稱。 <ApplicationType> 是應用程式的類型,例如 .exe。 而 .config 是必要的後綴。

參考資料