2008-09-18 57 views
4

我們有一套相互關聯的.Net 3.5應用程序。一些是網站,一些是網絡服務,一些是Windows應用程序。每個應用程序當前都有自己的配置文件(app.config或web.config),目前在配置文件中有一些重複鍵(手動同步),因爲多個應用程序需要相同的配置值。此外,這套應用程序還部署在各種環境中(開發,測試,生活等)配置多個.Net應用程序的最佳方法

什麼是管理這些多個應用程序從單個配置源配置的最佳方法,因此配置值可以在多個應用程序是否需要我們還希望爲每個環境分別配置(因此在部署時不必手動更改某些特定的配置值,例如conenction字符串),但同時不想維護多個大型配置文件(每個環境一個)在添加新的配置密鑰時保持同步,這將證明麻煩。

回答

1

我們使用文件模板(如MyApp.config.template和MyWeb.config.template)以及NAnt屬性來指定環境之間不同的位。所以模板文件看起來有點像這樣:

<MyAppConfig> 
    <DbConnString>${DbConnString}</DbConnString> 
    <WebServiceUri uri="${WebServiceUri}" /> 
</MyAppConfig> 

期間,我們通過剛剛通過南特腳本每個環境循環,改變惡性性質$的值{產生不同環境的所有CONFIGS構建DbConnString}和$ {WebServiceUri}爲每個環境(實際上這些都設置在一個單獨的文件中,每個環境都有不同的部分),然後用擴展屬性的選項進行NAnt複製。

花費了一點時間才能建立起來,但它已經爲我們節省了至少10倍的時間,節省了不同版本的配置文件。

7

Visual Studio有一個比較模糊的功能,可以讓你添加現有的項目作爲鏈接,它應該完成你正在尋找的東西。有關此主題的更多詳細信息,請查看Derik Whittaker's post

Visual Studio的確應該讓這個選項更加醒目。沒有人真的認爲點擊「添加」按鈕旁邊的那個小箭頭。

0

查看微軟模式和實踐小組的棱鏡框架?

+0

如何將棱鏡的幫助與配置問題? – 2009-02-23 09:34:27

3

您可以將App.config分成多個配置文件。您只需指定包含配置部分的文件的名稱即可。

變化的app.config:

<SomeConfigSection> 
    <SettingA/> 
    <SettingB/> 
</SomeConfigSection> 
<OtherSection> 
    <SettingX/> 
</OtherSection> 

進入的app.config和SomeSetting.xml:

<SomeConfigSection file="SomeSetting.xml" /> 
<OtherSection file="Other.xml" /> 

其中SomeSetting.xml包含:

現在你可以撰寫你的app.config從不同的部分文件中用某種構建或部署腳本。例如:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml 
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml 
相關問題