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

简介:   我最近一直在摆弄Visual Studio 2010 Beta版,我最喜欢的一个新的特点(新特点很多)是新版web.config变换。  Web.config变换是启动设定,所以你的每个编译链接设置都有一个设置“delta”(默认的是Debug和Release)。

  我最近一直在摆弄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

  祝你玩得开心!

目录
相关文章
|
24天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
24天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
1月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
35 4
|
1月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
39 3
|
1月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
25 3
|
1月前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
36 3
|
7月前
Visual Studio 2022 中VLD库如何安装
Visual Studio 2022 中VLD库如何安装
738 1
|
7月前
Visual Studio 2022 中VLD库如何安装
Visual Studio 2022 中VLD库如何安装
716 0
|
6月前
|
IDE 开发工具 C语言
Visual Studio 2017 安装及使用(新手)
Visual Studio 2017 安装及使用(新手)
1311 0
|
5月前
|
弹性计算 自然语言处理 Windows
通义灵码 Visual Studio 下载安装指南(附安装包)
本安装步骤适用于 Windows 10 及以上操作系统中安装和使用通义灵码。
131977 20