共用方式為


使用 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 應用程式組態檔擷取資訊。

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

  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. 您可以使用應用程式組態檔收集以索引鍵/值格式儲存的自訂應用程式設定。 您可以在相關聯組態檔的 區段中加入 <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>
    
  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 類別的 屬性方法AppSettingsConfigurationManager 類別位於 System.Configuration 命名空間中。 AppSettings.Get當方法收到包含索引鍵的字串輸入參數時,應用程式會擷取與索引鍵相關聯的值。

    下列程式代碼會從相關聯的組態檔擷取 屬性的值 Key0 。 程式代碼接著會將此值放在字串變數中 sAttr 。 如果這個值沒有索引鍵,則不會儲存在 中 sAttr

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

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. 您可以使用 屬性的 AppSettings 一個參考來擷取 區段中的所有索引鍵/值組 <appSettings> 。 當您使用 屬性時 AppSettings ,應用程式會傳回所有相關聯的索引鍵/值組。 這些配對會儲存在類型中 NameValueCollectionNameValueCollection包含應用程式所擷取之每個索引鍵的索引鍵/值專案。 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();
        }
    }
}

完整組態檔清單 (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 是必要的後綴。

參考資料