1

假設我有一個成功構建的.NET項目。現在,我需要選擇性地構建到不同的環境,如DEV,QA和PROD。每個都需要自己的配置文件(例如app.config)來包含相應的連接字符串和其他設置。推薦使用可選配置構建.NET項目的方法

我看了一下簡單的預構建腳本,例如Scott Hanselman的this one。它的工作原理,但我的問題是預構建步驟修改源。簡單地構建項目將覆蓋源文件並不必要地觸發源代碼管理修改。

我也可以看看VS/MSBuild以外的腳本,在配置文件放在那裏,但我真的希望還有更好的方法。也許是VS/MSBuild中獨立的一種方式?

我對目標服務器的部署策略很靈活。我考慮過一個安裝項目,這需要在打包之前進行配置。或者,xcopy安裝也可以。

想法?

回答

1

使用特定於您希望部署到的每個環境的設置,創建一個包含配置文件的主項目的子文件夾。在構建/部署時,這些文件將被推送到bin文件夾或部署目標的子目錄中。於是,無論是定義一個MSBuild腳本,VS生成後的行爲或犯一個安裝包處理(也許所有的上面),要麼:

  • 修改的app.config引用所需的孩子配置文件明確,或
  • 將其中一個子配置複製到app.config正在查找的預定義位置和名稱。

從主的app.config或web.config中的子文件的引用可能看起來像:

<connectionStrings configSource="MySeperateConnStringsFile.config" /> 
<appSettings configSource="MySeperateAppSettingsFile.config" /> 

爲此,您可以使用自定義配置節爲好;只要確保像通常那樣在主文件的configSections區域中設置這些部分即可。

2

更新01/09/2012 - 我開始使用團隊建設這個項目,並沒有想我的構建機器上安裝的Windows SDK。我做了一些研究並偶然發現了SlowCheetah,這是的方式去爲此。還有一個blog post用於使用Team Build啓動和運行。


對app.config文件的Visual Studio XML轉換。擴展爲網絡人員提供的內容。雖然我沒有看到它,但下面是設置它的很好的資源:

您可以從。this article獲取.targets文件以及如何使用它的說明。請確保您閱讀文章末尾處的更新以獲取最新信息。

您還需要Vishal Joshi's blog中的信息來描述如何設置項目中的所有內容。簡單的事情,比如讓.config文件在解決方案資源管理器中相互嵌套,會給我帶來歡樂!

如果你還沒有它,你需要安裝.NET Framework 4.0 SDK,因爲轉換的東西使用了一個工具。

這些文章有提示和鏈接讓你繼續轉換語法。看到一兩個樣本後,它非常簡單。

祝你好運!

相關問題