星期四, 10月 15, 2020

[VS] 使用 Configuration Transform 依組態切換 App.Config

在 Console 或 WinForm 中,可以使用 Configuration Transform 依組態切換 App.Config,來達到不同環境使用不同連線字串或參數設定來 run

先安裝 Configuration Transform 套件

[VS] 使用 Configuration Transform 依組態切換 App.Config-1 

安裝完成後,可以在 App.Config 上看見功能選項
 
     [VS] 使用 Configuration Transform 依組態切換 App.Config-2

安裝完成後會出現 App.Debug.Config 和 App.Release.Config 兩個設定檔案
 
  [VS] 使用 Configuration Transform 依組態切換 App.Config-3

App.config 內建立連線字串和自訂變數選項
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <!--連線字串-->
  <connectionStrings>
    <add name="default" connectionString="" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <!--自訂變數-->
  <appSettings>
    <add key="Path" value=""/>
  </appSettings>

</configuration>
App.Debug.config 內設定 Debug 環境下
  • 連線字串:利用 Windows 驗證連線 Local SQL Server
  • 自訂變數值:D:\DebugDir
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <connectionStrings>
    <add name="default" connectionString="Data Source=.\SQL2017;Initial Catalog=AdventureWorks;Integrated Security=True" providerName="System.Data.SqlClient" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
  </connectionStrings>

  <appSettings>
    <add key="Path" value="D:\DebugDir\" xdt:Locator="Match(key)" xdt:Transform="Replace" />
  </appSettings>

</configuration>
App.Release.config 內設定 Release 環境下
  • 連線字串:利用 SQL 驗證連線 Product 環境上的 SQL Server
  • 自訂變數值:D:\ReleaseDir
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <connectionStrings>
    <add name="default" connectionString="Data Source=IPAddress,PortNumber;Initial Catalog=AdventureWorks;UID=LabDemo;PWD=P@ssword;" providerName="System.Data.SqlClient" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
  </connectionStrings>

  <appSettings>
    <add key="Path" value="D:\ReleaseDir\" xdt:Locator="Match(key)" xdt:Transform="Replace"/>
  </appSettings>

</configuration>
設定完成後,可以透過 [Preview Config Transforms] 來比對差異

  [VS] 使用 Configuration Transform 依組態切換 App.Config-4

練習重點紀錄
最後測試一下 debug 和 release 模式下的 App.Config 設定值
using System;
using System.Configuration;

namespace ConfigurationTransform
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(ConfigurationManager.ConnectionStrings["default"]);
            Console.WriteLine(ConfigurationManager.AppSettings["Path"]);
        }
    }
}
Debug 模式

2 則留言: