本文將告訴您如何在您可以稍後在 Run Time 時擷取由其相關聯的應用程式的組態 (.config) 檔中儲存自訂的資訊。當您必須定義應用程式相關聯的資料時,這會很有幫助。
需求
下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
- Microsoft Windows 2000、 Windows XP、 Windows Server 2003,Windows Vista 或 Windows Server 2008
- Microsoft Visual C#
本文假設您已熟悉下列主題:
建立主控台應用程式,會讀取組態檔的內容
您可以在應用程式相關聯的組態檔中儲存應用程式設定。組態檔儲存在 XML 格式。
System.Configuration 和 Microsoft.NET Framework 中的
System.Collections.Specialized 命名空間包含必要的類別,可在 Run Time 期間從.NET 應用程式組態檔中擷取資訊。
若要建立主控台應用程式,在執行階段讀取關聯的組態檔的內容,請依照下列步驟執行:
- 啟動 Visual Studio.NET 或 Visual Studio 2005。
- 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
- 按一下 [Visual C#專案類型,] 下,然後按一下 [範本] 下方的 [主控台應用程式。為專案的名稱 ConConfig。預設情況下,Visual C# 建立名為程式的類別。
附註在 Visual 的 Studio.NET 2003年 專案類型,] 下按一下 [Visual C# 專案,然後按一下 [範本] 下方的 [主控台應用程式]。為專案的名稱 ConConfig。預設情況下,Visual C# 建立名為類別 1 的類別。 - 請確定可以看見 [方案總管] 視窗。如果看不到它,請按 CTRL + ALT + L 組合鍵。
- 在 [方案總管] 中以滑鼠右鍵按一下專案名稱,按一下 [新增],然後再按一下 [新項目]。
- 在 [加入新項目] 清單按一下以選取 [XML 檔。
- 在 [名稱] 文字方塊中輸入 App.config,然後按一下 [新增]。
附註在 Visual 的 Studio.NET 2003年中按一下 [開啟]。 - 您可以使用應用程式組態檔來收集索引鍵/值格式儲存的自訂應用程式設定。您可以包含 <add><appsettings>中的項目 關聯的組態檔的區段。每個索引鍵/值組有一個 <add> 項目。一個 <add> 項目具有下列格式:
<add key="Key0" value="0" />
新增一個 <appsettings><add>的區段 組態檔 <configuration>之間的項目 and </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>中保留從組態檔機碼值 區段組態] 檔案的宣告 主要 區段中的字串變數,如下所示:
- 從 <appsettings>擷取指定索引鍵的值 區段使用 ConfigurationManager 類別的 AppSettings 屬性的 Get 方法,組態] 檔案。ConfigurationManager 類別是在 System.Configuration 命名空間內。當 AppSettings.Get 方法接收包含索引鍵的字串輸入的參數時,應用程式會擷取與索引鍵相關聯的值。
下列程式碼從關聯的組態檔擷取 Key0 屬性的值。然後程式碼會將此值置於 sAttr 字串變數中。如果不存在這個值的索引鍵,執行任何動作會儲存在 sAttrsAttr = ConfigurationManager.AppSettings.Get("Key0"); - 若要顯示在主控台視窗中的應用程式會擷取值,使用 Console.WriteLine,如下所示:
Console.WriteLine("The value of Key0 is "+sAttr); - 您可以使用 AppSettings 屬性的一個參考來擷取 <appsettings>中的所有索引鍵/值組 區段。當您使用 AppSettings 屬性時,應用程式會傳回所有相關聯的索引鍵/值組。 這些配對都儲存在 NameValueCollection 型別。NameValueCollection 包含應用程式會擷取每個索引鍵的索引鍵/值項目。NameValueCollection 類別是在
NameValueCollection sAll ;
sAll = ConfigurationManager.AppSettings;
System.Collections.Specialized 命名空間。 - NameValueCollectionAllKeys 屬性參考字串陣列,具有應用程式會擷取每個索引鍵的項目。使用 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,變更
ConfigurationSettingsConfigurationManager 類別的所有執行個體。
完整的設定檔清單 (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
疑難排解
如需詳細資訊,請參閱下列 Microsoft 開發人員網路 MSDN 網站:
文章編號: 815786 - 上次校閱: 2008年7月16日 - 版次: 3.1
這篇文章中的資訊適用於:
- Microsoft Visual C# 2008 Express Edition
- Microsoft Visual C# 2005 Express Edition
- Microsoft Visual C# .NET 2003 標準版
- Microsoft Visual C# .NET 2002 Standard Edition
| kbmt kbsweptvs2008 kbcollections kbcollectionclass kbconfig kbnamespace kbhowtomaster kbprogramming KB815786 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:
815786
(http://support.microsoft.com/kb/815786/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。