[.NET] Web.config / App.config Transformation (switch Debug or Release mode)

[.NET] Web.config / App.config Transformation (switch Debug or Release mode)


在某些情况之下我们可能会依照环境而调整程序中的参数,比如说连线字符串

如何同时维护 Debug/Release 模式?我们有几种手法来调整不同环境的参数

  1. 手动调整(驻解/反驻解)
  2. #if(Debug)
  3. Conditional
  4. 组态档Web.config / App.config

本篇要介绍的就是最后一种方式,组态档。

  1. 组态档默认已经有 Web.config、Web.Debug.config、Web.Release.config 三种文件
  2. Winform 及 Console 没有这样的文件 Debug/Release ,所以可以安装 SlowCheetah 扩充工具

image

使用情境:

假设我有三种环境,三种环境的组态设定都不一样,我该如何做?

image

本文连结

  • Web Site
  • Winform / Console

Web Site

首先,我在 Web.config 组态档里,有一个 appSetting,名为 test

@Web.config


 

再来为Debug及Release模式加上 xdt:Transform="SetAttributes" xdt:Locator="Match(key) 标签

@Web.Debug.config


 

@Web.Release.config


 

当我在 VS 按 Ctrl+F5 的时候,用的是Web.config:

image

按下发行(debug)时,用的是Web.Debug.config:

SNAGHTML3faf19

按下发行(Release)时,用的是Web.Release.config:

SNAGHTML3f41aa

透过 Transform 标签,VS 在建置模式可以帮我们替换掉组态档的 test 的 value

image

PS.若对 Web 发行有问题可以参考

http://www.dotblogs.com.tw/yc421206/archive/2013/03/15/96849.aspx

http://www.dotblogs.com.tw/yc421206/archive/2014/01/21/141965.aspx

PS.若是要替换连线字符串,原本我们要 Match(Key),改成Match(name),Transform标签也不需要特别记下写法,抄 VS 给予的范例就可以了

image


Winform / Console

Winform / Console应用程序,在安装完扩充套件之后就有 Add Transform 的功能,也能够轻易的产生出App.Debug.config / App.Release.config,使用方式也跟 Web Site 一模一样

image

默认它就没有像 Web 那样有三种模式,不过我们可以自己加上一个 Dev mode,如下图步骤:

image

image

image

延用上一个范例情境,我们也可以有三种开发模式

Dev(开发环境)

image

Debug(测试环境)

image

Release(正式环境)

image

PS.应用程序除了打包带走之外,使用 ClickOnce 也是一种选择

http://www.dotblogs.com.tw/yc421206/archive/2012/03/02/70464.aspx

http://www.dotblogs.com.tw/yc421206/archive/2012/03/07/70564.aspx

http://www.dotblogs.com.tw/yc421206/archive/2013/03/25/98870.aspx


文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/07/28/146082.aspx

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季