存儲您認爲可能會在配置文件中的環境之間更改的內容。
如果你喜歡,Visual Studio可以在這裏做繁重的工作;您可以創建設置並從Visual Studio項目的屬性的「設置」選項卡中指定默認值。
這將創建一個配置文件給你,並通過Properties.Settings.Default提供強類型的訪問。
至於通過構建處理多個環境,我見過一些人建議維護配置文件的多個副本 - 例如每個環境一個 - 另外一些人建議在構建或部署過程中使用nant來修改配置文件相。您可以使用在命令行上傳遞給nant的屬性(例如)來選擇要構建的環境(或部署,具體取決於您如何執行此操作)。
我不建議這兩種方法的原因是:
- 它們都需要改變你的構建,以支持新的環境。
- 如果您更改了部署環境中的設置並忘記更新構建,那麼下一個部署將重置該更改(某種程度上破壞了配置設置點)。
- 如果有人創建了一個新的環境(可以說,他們想探索從升級到SQL Server例如新版本中出現的問題),不花哨創造出構建系統中的所有新的配置文件,他們可能會決定只使用現有環境的設置。假設他們選擇使用實時設置進行部署,並忘記隨後更改某些內容。你的新「測試」環境現在可以指向現場套件。
我創建了每個配置文件(例如web.config.example)的副本並註釋掉它們中的設置(除非它們具有有意義的默認值)。我檢查了這些,並且部署了而不是真正的web.config(也就是說,web.config不會自動部署,web.config.example部署爲web.config.example。
新環境的管理員必須將文件複製並重命名爲web.config並提供有意義的值)。我還將所有調用置於自己的包裝類後面 - 如果缺少強制設置,則會引發異常。
構建和我的環境不再相互依賴 - 一個構建可以部署到任何環境。
如果缺少一個設置(新環境或現有環境中的新設置),那麼您會得到一個很好的清除異常,以告訴管理員要執行的操作。
升級後,現有設置不會更改,因爲只更新了.example文件。這是一項管理任務,可將當前設置與最新示例進行比較,並在必要時進行修改。
要配置部署,可以將所有環境設置(安裝路徑等)放入nant屬性中,並將它們移動到單獨的文件中(例如settings.build),然後使用nant include任務將該文件包含在部署文件的頂部(例如deploy.build)。然後,您可以部署新版本的deploy.build,而無需像settings.build中那樣覆蓋配置更改。如果在deploy.build中引入新屬性,nant將失敗並顯示一條好消息,告訴您尚未設置該屬性。
嗨,謝謝你的回答。這已經是我們已經做的很大一部分,非常相似。但我真正想知道的是如何處理環境部署差異。例如:安裝較新版本的Web應用程序之前,舊應用程序的備份目錄。 – Bertvan 2011-01-27 12:28:04