【Visual Studio】透過Configuration Transform套件快速依照建置組態切換App.Config

Visual Studio 針對Web.Config,可以依據是 Debug或Release切換Web.Config檔案。

在Console專案中的App.Config卻預設沒有這功能。

今天要介紹一個套件:Configuration Transfor

先附上套件網站:

VS2013以下:Configuration Transform
VS2015:ConfigTransformation

使用方法其實很簡單,在App.Config上,按滑鼠右鍵。選擇:Add Config Transforms。

此時,該套件自動會幫你建立額外兩個組態檔:

  • App.Debug.config => 放測試用組態
  • App.Release.config => 放Release組態

其運作原理是用跟Web.Config一樣的方案。詳見網址

大致說明一下:看以下三個組態檔。

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="Test" value="This is Normal Mode"/>
  </appSettings>
</configuration>

App.Debug.config

<?xml version="1.0"?>
<!-- For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="Test" value="This is Debug Mode" xdt:Locator="Match(key)" xdt:Transform="Replace"/>
  </appSettings>
</configuration>

App.Release.config

<?xml version="1.0"?>
<!-- For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="Test" value="This is Release Mode" xdt:Locator="Match(key)" xdt:Transform="Replace"/>
    <add key="OnlyRelease" value="This is Insert Mode" xdt:Locator="Match(key)" xdt:Transform="Insert"/>
  </appSettings>
</configuration>

這時候,可以透過套件工具,讓你檢視調整過後的config檔,或是直接轉換。

  • Execute transformation => 將你選取的檔案(圖利為:App.Debug.config)中的內容,透過語法轉換直接修改至App.config
  • Preview transformation => 預覽結果
  • Preview Config Transforms => 預覽結果(暫時看不出來上下兩者有何不同)

建置時,記得選擇組態,會依據組態變更。

依照上訴範例轉換出來的結果如下:

Debug組態

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="Test" value="This is Debug Mode" />
  </appSettings>
</configuration>

Release組態

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="Test" value="This is Release Mode" />
    <add key="OnlyRelease" value="This is Insert Mode" />
  </appSettings>
</configuration>

工具其實也就這樣。

至於轉換語法目前我懂兩個已經完成需求了。

xdt:Locator="Match(key)"

代表同一個Key的屬性。

xdt:Transform="Replace"

代表轉換模式,Replace=>取代   Insert=>新增。

 

小插曲:

我本身NB只灌有Visual Studio 2015,透過擴充功能和更新找到文章開頭的元件,

不過,安裝完選單完全不會出現。

後來在VS2013元件庫的問答中看到有人提供支援2015的連結。

安裝此連結後,我的VS2015才順利執行。