浅析Visual Studio 2010中常见Web.Config变换
创始人
2024-06-09 04:31:29
0

【51CTO独家特稿】我最近一直在摆弄Visual Studio 2010 Beta版,我最喜欢的一个新的特点(新特点很多)是新版web.config变换。

Web.config变换是启动设定,所以你的每个编译链接设置都有一个设置“delta”(默认的是Debug和Release)。当你建立你的解决方案(比如当你发布一个包的时候)你原始的Web.config会根据你的Web.debug.config文件中的设置变换(以debug设置为例)。

有很多日志和MSDN可供你参考,但是我想我应该写一个简明扼要的帖子,它可以让你熟悉怎样进行一些常见的web.config变换。

首先,回顾一下XDT的简单知识(那个人很伟大)

因为它属于web.config替换,所以你得知道每个XML元素可以有两个xdt属性:xdt:Tranform 和 xdt:Locator。

变换属性:你想对XML元素干什么?
你可能想替换它,可能想设置一个属性(SetAttribute),或者移除一个属性(RemoveAttribute),等等。

属性定位:需要变换的元素在哪里?

你可能想要转换一个符合特殊属性值的元素。

例1:替换所有的AppSettings

这是一个极端的情况,只能在你想替换web.config的整个部分的时候用。这种情况我将替换web.config中所有的AppSettings并在web.release.config中进行新的设定(这句英文可能有问题,语法不通顺!)。下面是我的基线web.config appSettings:

  1.  
  2.    key="KeyA" value="ValA"/> 
  3.    key="KeyB" value="ValB"/> 
  4.  

现在在我的web.relaese.config文件里面,我应该创建一个appSettings程序,但是我把属性xdt:Transform设置成了”Replace”因为我想替换整个元素。我没有必要用xdt:Locator属性,因为没有什么东西需要去定位—我只是想清除原来的内容并替换所有的东西。

  1.  xdt:Transform="Replace"> 
  2.    key="ProdKeyA" value="ProdValA"/> 
  3.    key="ProdKeyB" value="ProdValB"/> 
  4.    key="ProdKeyC" value="ProdValC"/> 
  5.  

请注意在这个web.release.config文件里我的appSettings程序段有三个键而不是两个,而且他们也不尽相同。现在让我们看看当我们发布的时候在产生的web.config文件中发生了什么:

  1.  
  2.    key="ProdKeyA" value="ProdValA"/> 
  3.    key="ProdKeyB" value="ProdValB"/> 
  4.    key="ProdKeyC" value="ProdValC"/> 
  5.  

正如我们所预料的-- web.config appSettings被web.release config中的值替换了。这很简单!

例2:替换一个特定的AppSetting的值

例1可以说是一杆子打倒一片的做法,那么怎么做一点更加实际的东西呢?让我们回到原始的AppSettings web.config例子:

  1.  
  2.    key="KeyA" value="ValA"/> 
  3.    key="KeyB" value="ValB"/> 
  4.  

这次我们想要用更加适合产品环境的值来代替KeyB的键值。我们需要用到xdt:Transform 和 xdt:Locator两个属性。

我们的办法是定义一个appSettings程序段。开头如下:

  1.  
  2.    key="KeyB" value="ProdValA" /> 
  3.  

现在我们要添加变换,我们想替换任何跟这个键(KeyB)符合的appSetting。

  1.  
  2.    key="KeyB" value="ProdValA" xdt:Transform="Replace" xdt:Locator="Match(key)" /> 
  3.  

一旦我们发布,***生成的Web.config文件看起来如下:

  1.  
  2.    key="KeyA" value="ValA"/> 
  3.    key="KeyB" value="ProdValA"/> 
  4.  

非常棒—我们替换了keyB键却保留了keyA键(和其他任何键,如果他们存在的话)。

例3:Compilation Debug设置成”true”

这个情况简单,因为微软公司把即开即用的软件基础架构给了我们—但是我还是想把它在这里再写一遍,因为它阐明了一个常见的情况,而且表明如果有更多的变换,那么就把Compilation Debug设置成”true”。

  1.  
  2.    xdt:Transform="RemoveAttributes(debug)" /> 
  3.  

也有很多方法去进行设定SetAttributes,移除元素,插入元素,等等。

学无止境

显然,这只是些浅显的介绍,但是这就是现在我所需要涉及的深度。在我下次写帖子之前,你可以去看看web.config 变换的msdn参考文献,地址是:

http://msdn.microsoft.com/en-us/library/dd465326%28VS.100%29.aspx。

祝你玩得开心!

【编辑推荐】

  1. Visual Studio 2010并行编程及调试诊断功能详解
  2. 图解VS 2010与.NET 4.0多显示器支持
  3. VS 2010和.NET 4的多定向支持
  4. 图解VS 2010和.NET 4起始项目模板
  5. VS 2010和.NET 4***步:Web.config文件

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...