透過 SlowCheetah - XML Transforms 讓你的 App.Config 也可以支援轉換語法

透過 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】。

image

點選之後就會看到 App.Config 下多出了 App.Debug.config 和 App.Release.config 檔案,分別用來對應 Debug 和 Release 組態。

image

接著筆者做一個簡單的實驗,在 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。

image

接著變更專案組態為 Release 後重新建置專案,開啟專案目錄中 Release 目錄下的 App.Config,可以看到 DBServer2 的連線字串順利被新增到 App.Config。

image

經過上述實驗可以證明透過安裝 SlowCheetah - XML Transforms,讓您的 App.Config 也可以隨著組態的設定來調整,而不需要在部署前手動去修改 App.Config。

參考資料

- 如何使用ASP.NET Web應用程式專案部署的Web.Config轉換語法簡化部署流程

- Applying XDT magic to App.Config