我現在處理這個問題的方法是通過多個配置文件,如:如何爲多個環境處理多個web.config文件?
web.config
web.Prod.config
web.QA.config
web.Dev.config
當項目被部署到不同的環境,我只是用正確的設置重新命名相應的文件。
任何人都有如何更好地處理這個問題的建議?
編輯: 這裏有一些的,在每個配置改變的事情:
- WCF客戶端點URL和安全
- 自定義數據庫CONFIGS
- 會話連接字符串
- log4net的設置
我現在處理這個問題的方法是通過多個配置文件,如:如何爲多個環境處理多個web.config文件?
web.config
web.Prod.config
web.QA.config
web.Dev.config
當項目被部署到不同的環境,我只是用正確的設置重新命名相應的文件。
任何人都有如何更好地處理這個問題的建議?
編輯: 這裏有一些的,在每個配置改變的事情:
這實際上取決於環境之間的差別這導致你使用不同的web.config文件。你能否提供更多的信息,說明爲什麼每個環境目前需要一個不同的環境?
我想每個環境都需要專門的數據庫連接,狀態服務配置以及其他各種可配置項目,這些項目很大程度上取決於您所處的環境。 – 2009-02-26 22:26:13
我們一直在做它的方式是重寫appSettings部分:
<appSettings file="../AppSettingsOverride.config">
<add key="key" value="override" />
...
</appSettings>
爲appSettings部分這隻適用,因此只在一定程度上是有用的。我會對更強大的解決方案非常感興趣。
編輯下面
剛看了這樣的: http://channel9.msdn.com/shows/10-4/10-4-Episode-10-Making-Web-Deployment-Easier/
VS2010具有配置變換看起來相當真棒,應該多配置一個完整的微風。
這很有趣 - 您是否管理每個AppSettingsOverride.config文件源代碼管理呢?使用你的方法和使用單獨的web.config文件有什麼區別? – 2009-02-26 22:27:50
在Visual Studio中,我創建了xcopy build事件,並將所有配置文件存儲在/ config文件夾中。如果您在構建配置之後爲文件命名,則只需要一個事件:即使用/config/web.$ (Configuration).config覆蓋web.config
我們有幾個解決方法(不是所有的都是使用web.config完成,但具有相同的想法)
通過大多數不同的版本管理軟件(subversion,git等),您可以忽略特定的文件。
因此,在顛覆,我有:
configure.template.php - 該文件版本,幷包含模板化的配置數據,如空的DSN 的configure.php - 此文件將被忽略,從而使對它的更改不會被跟蹤。
在顛覆,要做到這一點的方法是:
SVN PE的svn:忽視。 它會打開你的編輯器,然後你鍵入 configure.php
保存,退出,簽入你的更改,你很好走。
我最喜歡的解決方法是使用configSource
屬性。不可否認,我只在一個元素(<connectionStrings>
)上使用它,但它確實提供了一種簡單的方法來交換web.config的不同段(我通過WebSetup項目在安裝過程中完成)。
我還使用web.DEV.config,web.TEST.config,web.PROD.config等
我覺得這種方式最簡單,最簡單和直接的方式,如果你的項目不復雜。我不喜歡讓事情比必要更復雜。
但是,我使用NAnt,我認爲它適用於此。您可以爲不同的環境設置構建。 NAnt需要一些閱讀來學習如何使用它,但它非常靈活。
http://aspnet.4guysfromrolla.com/articles/120104-1.aspx
我用它與CruiseControl.net和NUnit一起執行自動日常構建與單元測試驗證,並認爲他們合作得很好。
變換似乎對此很有幫助。您可以用不同的規則替換某些部分。
http://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx
這是我做的方式,除了web.config文件和網頁dev.config是一樣的。 – tvanfosson 2009-02-26 22:15:47