2012-06-14 32 views
1

我有幾個項目,我們有3-5個不同的web.config.xxx,它們應該滿足不同的場景,開發人員計算機,構建服務器,測試服務器,生產服務器,生產內部的,生產外部的。 xxx只是一個描述它所屬環境的標記。爲不同場景配置web.config

這些web.configs大部分是相同的,像connectionsstrings,integrationpoints,mailserver等不同,但結構或多或少是相同的。所以如果我在web.config中添加一個值,我必須將它寫入幾個文件中,如果我改變它的值,我必須在解決方案中的所有web.configs中更改它...這很容易以爲我會在晚些時候這樣做,我可能會改變名字,我不確定這是否正確..所以我們有時會錯過價值觀,這就是尷尬。問題是這是一個應該很容易消除的問題。

如何處理這種情況?我開始着眼於可以檢查構建配置並進行一些簡單替換的「預構建事件」,如果我正在構建調試版,請將{db}更改爲DevDB。如果我爲構建服務器構建,我可以擁有構建配置併爲該環境做適當的替換。

是否有處理此問題的首選方法?

+0

您是使用網站項目還是Web應用程序項目?如果您正在使用Web應用程序項目,那些特定的web.config.xxx將不會對您有用,因爲它們在構建或重新構建期間不會合並。 –

回答

1

聽起來你會從配置轉換中受益。

當您部署Web站點時,通常希望部署的應用程序的Web.config文件中的某些設置與開發Web.config文件不同。例如,您可能想要禁用調試選項並更改連接字符串,以便它們指向不同的數據庫。

以下來源說明如何配置在部署過程中自動應用的web.config轉換文件,以便對web.config進行更改。

來源:How to: Transform Web.config When Deploying a Web Application Project

注意:該技術可應用於任何數量的部署(分段,測試,生產,富,酒吧等等)。

通常,在一個項目中,您將有1個web.config文件。與此相關的你可能有web.production.config,web.staging.config等。每個web。*。config文件都將是一個包含一點點語言的變換,用於修改web.config中的各種值,如連接字符串。這些轉換文件中的每一個都與您在部署期間通常選擇的部署選項(Visual Studio頂部的通常設置爲「調試」的小下拉列表)關聯。

+0

不幸的是,我們正在與網站......你的解決方案,我正在尋找的每一個方面,但那一個...... – user1153744