透過 SlowCheetah - XML Transforms 讓你的 App.Config 也可以支援轉換語法
【情境描述】
在上一篇文章中筆者介紹透過轉換語法來自動化變更 Web.Config 的內容,進而簡化部署 Web 應用程式的作業,後來有網友(PeiYao)提供這篇文章,詢問筆者是否將轉換語法實作在 App.Config,說實在的筆者只將轉換語法實作在 Web 應用程式,App.Config 並沒有做過,今天剛好要測試一個類別庫專案,順便來實作看看。
【實作步驟】
首先您必須到 Visual Studio 元件庫網站下載 SlowCheetah - XML Transforms,安裝完畢之後重新開啟 Visual Studio,接著筆者開啟類別庫專案,於方案總管上的 App.Config 按滑鼠右鍵,您就可以看到多出了一個之前沒有的選項【Add Transform】。
點選之後就會看到 App.Config 下多出了 App.Debug.config 和 App.Release.config 檔案,分別用來對應 Debug 和 Release 組態。
接著筆者做一個簡單的實驗,在 App.Debug.config 中加入一個 ConnectionString(其中Data Source 設定為 DBServer1),並設定 Transform 為 Insert,當使用 Debug 組態建置時,會將這個連線字串插入到 App.Config 中。
<?xml version="1.0" encoding="utf-8" ?><!-- For more information on using transformations
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"><connectionStrings><add name="NorthwindConnectionString"connectionString="Data Source=DBServer1;Initial Catalog=Northwind;Integrated Security=True"providerName="System.Data.SqlClient" xdt:Transform="Insert" /></connectionStrings></configuration>
另外,在 App.Release.config 中加入一個 ConnectionString(其中Data Source 設定為 DBServer2),同樣設定 Transform 為 Insert,當使用 Release 組態建置時,會將這個連線字串插入到 App.Config 中。
<?xml version="1.0" encoding="utf-8" ?><!-- For more information on using transformations
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"><connectionStrings><add name="NorthwindConnectionString"connectionString="Data Source=DBServer2;Initial Catalog=Northwind;Integrated Security=True"providerName="System.Data.SqlClient" xdt:Transform="Insert" /></connectionStrings></configuration>
預設專案使用 Debug 組態,因此當我們直接建置專案後,開啟專案目錄中 Debug 目錄下的 App.Config,可以看到 DBServer1 的連線字串順利被新增到 App.Config。
接著變更專案組態為 Release 後重新建置專案,開啟專案目錄中 Release 目錄下的 App.Config,可以看到 DBServer2 的連線字串順利被新增到 App.Config。
經過上述實驗可以證明透過安裝 SlowCheetah - XML Transforms,讓您的 App.Config 也可以隨著組態的設定來調整,而不需要在部署前手動去修改 App.Config。
【參考資料】