2011-07-08 46 views
6

我有3個環境:Dev,QA,.NET 4. Prod。每個都有一個唯一的web.config文件。我們在管理所有三個版本方面一直存在問題。當手動合併TFS中的web.config文件時,很容易忽略一些關鍵的事情。我們不止一次使用連接字符串指向Prod上的QA。因此,I read up on web.config transformations.這些似乎需要MSBUILD。我們沒有構建服務器,所以我不確定如何嘗試使用此解決方案。有沒有一種方法可以使正常的Web發佈進行轉換?管理web.config文件

對於管理3個web.config文件,您是否有其他建議?

回答

1

有沒有一種方法,使轉換 工作與正常的Web發佈嗎?

絕對可以看看this MSDN link。你不需要MSBUILD。您可以在不同的配置文件中爲各種環境設置連接字符串。例如,您可以使用Web.config,Web.QA.config和Web.Prod.config,其中QA和Prod分別爲Visual Studio Build configurations

或者,您可以使用默認添加的構建配置:Web.config(本地開發),Web.Debug.config(用於QA)和Web.Release.config(用於生產)。

以此設置爲例,Web.config將具有所有配置,Web.Debug.config只具有針對該環境(連接字符串,應用設置等)更改的配置,以及Web.Release.config只有對於該環境而言變化的配置。

一旦您的配置和轉換設置完成,您只需更改構建配置,從Visual Studio構建和發佈即可。

+0

然後你是否從TFS中「解除綁定」web.debug.conf文件,以便其他人可以編輯它?例如:「文件 - 源代碼管理 - 從源代碼管理中排除web.debug.config。」 ? –

+0

@MarkB,無需解除綁定。這是一個像其他任何源文件。任何人都應該能夠根據您的TFS策略配置進行編輯。 –

+0

是否可以在不使用發佈的情況下執行此操作? – AlexFoxGill

1

您對管理3個web.config文件有任何其他建議嗎?

是的,不要管理它們。我們管理得越少,犯錯的機會就越小。爲您的所有環境配備完全相同的web.config文件。相同的分佈式軟件包無處不在。

並且所有特定於環境的鍵(例如基本URL,連接字符串...)都可以在machine.config中定義,您只在每個服務器上部署一次,並從所有應用程序中重用。或者在您的IIS站點的根目錄下有一個web.config,這是所有應用程序都可以從中獲得的。

+6

我不希望看到應用程序設置放在machine.config中。很多時候,web服務器託管多個應用程序並將machine.config中的所有設置填充到災難中。 –

0

另一種方法是創建移動設置,將其更改爲外部文件&使用configSource屬性將該文件重新鏈接。對於不同的部分,您將其放入外部文件中。

然後,您可以有單獨命名的文件,如dev.config,qa.config,live.config &在web.config更改名稱,或有1個文件說叫environment.config &你永遠之間進行​​合併環境。

缺點是整個設置部分必須移入文件。

西蒙

1

如果您使用websetup項目創建msi,則可以將自定義安裝程序類添加到websetup。這會給你創造,將適當在web.config

msiexec.exe /Qb! /i "MyWebsiteMsi.MSI" SQL_SERVER_ConnStr="ABC" 

這裏設置的值預定義的批量腳本選項的一些頁面與舊的例子 enter link description here