一起谈.NET技术,浅析Visual Studio 2010中常见Web.Config变换

  我最近一直在摆弄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. <appSettings>
2. <add key="KeyA" value="ValA"/>
3. <add key="KeyB" value="ValB"/>
4. </appSettings>

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


<appSettings xdt:Transform="Replace">
<add key="ProdKeyA" value="ProdValA"/>
<add key="ProdKeyB" value="ProdValB"/>
<add key="ProdKeyC" value="ProdValC"/>
</appSettings>

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


<appSettings>
<add key="ProdKeyA" value="ProdValA"/>
<add key="ProdKeyB" value="ProdValB"/>
<add key="ProdKeyC" value="ProdValC"/>
</appSettings>

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

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

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


<appSettings>
<add key="KeyA" value="ValA"/>
<add key="KeyB" value="ValB"/>
</appSettings>

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

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


<appSettings>
<add key="KeyB" value="ProdValA" />
</appSettings>

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


<appSettings>
<add key="KeyB" value="ProdValA" xdt:Transform="Replace"
xdt:Locator="Match(key)" />
</appSettings>

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


<appSettings>
<add key="KeyA" value="ValA"/>
<add key="KeyB" value="ProdValA"/>
</appSettings>

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

  例3:Compilation Debug设置成”true”

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


<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

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

  学无止境

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

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

  祝你玩得开心!

时间: 2024-10-02 07:27:50

一起谈.NET技术,浅析Visual Studio 2010中常见Web.Config变换的相关文章

浅析Visual Studio 2010中常见Web.Config变换

我最近一直在摆弄Visual Studio 2010 Beta版,我最喜欢的一个新的特点(新特点很多)是新版web.config变换. Web.config变换是启动设定,所以你的每个编译链接设置都有一个设置"delta"(默认的是Debug和Release).当你建立你的解决方案(比如当你发布一个包的时候)你原始的Web.config会根据你的Web.debug.config文件中的设置变换(以debug设置为例). 有很多日志和MSDN可供你参考,但是我想我应该写一个简明扼要的帖子

一起谈.NET技术,Visual Studio 2010中敏捷开发流程模板的应用

本文将会为您讲述如何使用TFS 2010 MSF Agile 5.0流程模板为迭代项目而提供的工作簿.首先,让我们看一看Visual Studio 2010 IDE中的Team Explorer插件: 接下来,我们将会进入到SharePoint project portal中,为大家展示Team Explorer是如何模拟它的结构的.我们首先右击名字是Team Project的标题的那个节点,如下图所示: 这会让我们进入到SharePoint project portal中,如下图所示.注意Te

Visual Studio 2010中的Web开发

Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供很多新的功能.这些新功能旨在帮助开发人员快速方便地创建和部署质量高且功能全的 Web 应用程序. 目前,Visual Studio 2010 支持 HTML 代码片段.利用这些代码片段,可以生成高质量的代码.Visual Studio 中附带了很多代码片段,开发人员也可以创建自己的代码片段. Visual Studio 2010 提供的另一个新功能是转换 web.config 文件,以用于部署

一起谈.NET技术,Visual Studio 2010着力打造云计算平台

在RC版本发布之后,我们看到微软为Visual Studio 2010增加了很多新功能,同时在云计算方面也有很大的改善,随着云计算时代的到来,软件开发模式和商业模型都将进入全面开放组合的新时代.微软云计算平台Windows Azure,这将把微软带入一个崭新的时代. Azure来源于法语,语意为天空一样的湛蓝色,这也正是微软所希望的,把其打造成承载所有云上的应用和服务的蓝天.既然微软一开始就表明了要在云计算领域中一展身手,当然不会让我们失望.在微软的Visual Studio 2010产品中,就

一起谈.NET技术,Visual Studio 2010 RC 几个很酷的新功能

我一直在使用Visual Studio 2010RC版本.它有很多让人欣喜的东西.下面将其列举出来: Sequence Diagram Generation     我觉得这是一个救星.我不知道你是怎么样的,但作为开发人员,我在完成设计之后,就想潜心投入代码中.通常在开始编码之前,有时候我想要看序列图.现在,有了Visual Studio 2010序列图生成器,我可以简单地编写代码,然后生成.这不仅为您节省时间,而且让你更好地去理解可导致代码的复杂的一些分支.     以下是我在这篇文章中要使用

一起谈.NET技术,Visual Studio 2010 Web项目的jQuery版本升级方案

我们知道在Visual Studio 2010的非空Web项目(含Webform和MVC)中,都自动包含了jQuery库在项目的Scripts文件夹中. 但细心的人们都看到了正式版中包含的jQuery版本是1.4.1版,而不是jQuery官方最新发布的1.4.2版.处于新版效率的极大提升以及部分bug的修复,推荐大家跟新使用1.4.2版,而放弃1.4.1版.单个项目的调整比较简单就是把旧版本的删除,然后添加上1.4.2版的相应文件即可.但我们很多人可能更希望是以后创建的项目都是1.4.2版而不是

一起谈.NET技术,Visual Studio 2010构建Web浏览器应用程序

2001年,我使用C#中的WebBrowser ActiveX控件编写了我的第一个应用程序,点此阅读,Kapil Sony写了一篇文章介绍了C# 2.0中的WebBrowser控件,每一次.NET新版本发布,控件和功能都会发生一些变化,现在,WebBrowser控件已属于Windows Forms控件的一部分,本文是基于.NET 4.0和Visual Studio 2010完成的,如果你使用的不是Visual Studio 2010,可以去MSDN网站下载免费的Visual C# 2010 Ex

详解Visual Studio 2010中的扩展管理器

扩展能够为核心应用程序提供附加的功能或者自定义设置.在很多应用程序中这都是很流行的,包括流行的web浏览器IE和Firefox.微软的Office.媒体播放器.Photoshop.Eclipse.Visual Studio等等.其中有些可能比较新奇,而针对开发工具--像Eclipse和Visual Studio--的扩展让开发者的生产力得到了显著提高. Visual Studio早期的版本是构建在COM技术之上的.而Visual Studio的主要扩展方式插件是通过COM接口实现的.随着时间的变

在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim Nakashima.Hani Atassi 和 Danny Thorpe 将应用程序或服务部署到 Microsoft 云服务平台 Windows Azure 的原因有很多.例如,只为使用的内容付费从而可降低操作和硬件成本.构建几乎能无限缩放的应用程序.巨大的存储容量.地理位置等等,不胜枚举. 只有