ASP.net 4.0 新特性:Web.Config Transformation
2010-01-11 10:43
429 查看
一般来说,在您将 Web 应用 正式部署于生产环境前,它已经被用于多个环境了。这些环境可能包括: 开发人员开发环境、质量保证 (QA) 以及用户验收测试 (UAT)/暂存/预生产环境。在这些环境中转换应用程序时,配置文件中的很多设置都必须更改。比如:数据库链接字符串的配置,文件存放位置,服务器的地址和端口等。
VS2010 中通过提供 XML-Document-Transform engine 来帮我们解决这个问题。
要使用XML-Document-Transform engine就要先引用XML-Document-Transform 命名空间。如下面代码所示:
上图中,我们可以看到有2个关键属性:
xdt:Transform
xdt:Locator
这两个属性可以设置的值是一下几种类型:
我们新建一个,按照我们自己发布情况定义的编译选项:
如下图所示,我们建立一个本地部署测试环境的配置, 注意,这里默认就选中了 Create new project configurations
在 Solution Explorer 中选中 Web.config ,在右键菜单中点击:“Add Config Transforms” 项,如下图:
我们就可以看到多了一个“Web.LocalDeploy.config” 文件:
为了测试期间,我们 web.config 文件有以下设置:
Web.LocalDeploy.config 文件有以下设置:
从 Web.LocalDeploy.config 文件我们可以看到, 我们使用 LocalDeploy 发布时,要求修改 appSettings 属性 KeyOne 的值,同时,删除 compilation 中打开 debug 的功能。
之后,我们发布项目时, 就会自动产生对应的配置文件,发布选项如下:
为了简单起见,这里是发布到另外一个目录,我们在 D:/123/1 目录下查看 web.config 文件,就可以看到是下面的信息:
但是这跟我的期望还是有点差异,比如有些时候,我的配置并不在 web.config 文件中,就使用不到这个新特性。
另外在开发环境模拟部署环境的测试, 还是要手工修改 web.config 文件。而不能力用到这个特性。
参考资料:
ASP.Net4.0中新增23项功能
http://www.cnblogs.com/zhuqil/archive/2010/01/05/1639405.html (中文翻译)
http://www.codeproject.com/KB/aspnet/Whatis_New_ASP_Net_4.aspx (英文原文)
ASP.NET 4.0 新特性--Web.Config Transformation
http://www.cnblogs.com/worksguo/archive/2009/08/29/1556307.html
Web.config 转换概览(Transformation Overview)
http://www.cnblogs.com/Intersense/archive/2009/12/25/1632212.html
Web.config Transformation Overview
http://msdn.microsoft.com/zh-cn/library/dd465326(en-us,VS.100).aspx
Visual Studio 2010 中的 Web 开发
http://msdn.microsoft.com/zh-cn/library/ee851840.aspx
Web Deployment: Web.Config Transformation
http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
Visual Studio 2010: Web.config transforms
http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx
VS2010 中通过提供 XML-Document-Transform engine 来帮我们解决这个问题。
要使用XML-Document-Transform engine就要先引用XML-Document-Transform 命名空间。如下面代码所示:
转换的工作原理:
当 Microsoft Visual Studio 2010 编译时,编译器会自动根据当前选择的编译选项,选择对应的web.编译选项名.config和web.config 进行合并转换,继而产生对应部署环境的 web.config 文件,如下图所示:上图中,我们可以看到有2个关键属性:
xdt:Transform
xdt:Locator
这两个属性可以设置的值是一下几种类型:
转换 | 描述 |
xdt:Transform=“Replace” | 替换第一个匹配的节点 |
xdt:Transform=“Remove” | 清除第一个匹配的节点 |
xdt:Transform=“RemoveAll” | 清除所有匹配的节点 |
xdt:Transform=“Insert” | 在末尾插入节点 |
xdt:Transform=“SetAttributes(attributeNames)” | 创建或更改现有属性的值 |
xdt:Transform=“RemoveAttributes(attributeNames)” | 清除属性(如果有) |
xdt:Transform=“InsertBefore(XPath)” | 在指定Xpath前插入节点 |
xdt:Transform=“InsertAfter(XPath)” | 在指定Xpath后插入节点 |
定位符 | 描述 |
xdt:Locator=“Match(attributeName)” | 可以使用逗号分隔属性名称 |
xdt:Locator=“Condition(xPath Predicate)” | 可以接受任何 Xpath 谓词,如xdt:Locator="Condition(@name=’Northwind’ or @providerName=’ System.Data.SqlClient’)" |
xdt:Locator=“Xpath(/configuration/…)” | 可以接受任何复杂的 Xpath,如 "XPath(//system.web)" |
下面是一个简单的实例:
如下图所示,我们在一个 Web 项目中, 配置编译选项:我们新建一个,按照我们自己发布情况定义的编译选项:
如下图所示,我们建立一个本地部署测试环境的配置, 注意,这里默认就选中了 Create new project configurations
在 Solution Explorer 中选中 Web.config ,在右键菜单中点击:“Add Config Transforms” 项,如下图:
我们就可以看到多了一个“Web.LocalDeploy.config” 文件:
为了测试期间,我们 web.config 文件有以下设置:
Web.LocalDeploy.config 文件有以下设置:
从 Web.LocalDeploy.config 文件我们可以看到, 我们使用 LocalDeploy 发布时,要求修改 appSettings 属性 KeyOne 的值,同时,删除 compilation 中打开 debug 的功能。
之后,我们发布项目时, 就会自动产生对应的配置文件,发布选项如下:
为了简单起见,这里是发布到另外一个目录,我们在 D:/123/1 目录下查看 web.config 文件,就可以看到是下面的信息:
小结:
通过 ASP.net 4.0 新特性:Web.Config Transformation,我们可以自动产生不同使用环境下的 web.config。很强大,不错。但是这跟我的期望还是有点差异,比如有些时候,我的配置并不在 web.config 文件中,就使用不到这个新特性。
另外在开发环境模拟部署环境的测试, 还是要手工修改 web.config 文件。而不能力用到这个特性。
参考资料:
ASP.Net4.0中新增23项功能
http://www.cnblogs.com/zhuqil/archive/2010/01/05/1639405.html (中文翻译)
http://www.codeproject.com/KB/aspnet/Whatis_New_ASP_Net_4.aspx (英文原文)
ASP.NET 4.0 新特性--Web.Config Transformation
http://www.cnblogs.com/worksguo/archive/2009/08/29/1556307.html
Web.config 转换概览(Transformation Overview)
http://www.cnblogs.com/Intersense/archive/2009/12/25/1632212.html
Web.config Transformation Overview
http://msdn.microsoft.com/zh-cn/library/dd465326(en-us,VS.100).aspx
Visual Studio 2010 中的 Web 开发
http://msdn.microsoft.com/zh-cn/library/ee851840.aspx
Web Deployment: Web.Config Transformation
http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
Visual Studio 2010: Web.config transforms
http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx
相关文章推荐
- ASP.net 4.0 新特性:Web.Config Transformation
- Web.Config Transformation ASP.NET 4.0 新特性
- ASP.NET 4.0 新特性--Web.Config Transformation(原创)
- 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
- ASP.NET 4.0 的新特性(清晰的Web.Config文件)(翻译)
- 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进 推荐
- asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其他一些增强点
- ASP.NET 4.0新特性之Web.config的改进
- 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelec
- .NET 4.0 WCF WebConfig aspNetCompatibilityEnabled 属性
- App.config使用ASP.NET Web Project的Transformation
- asp.net 4.0 在webconfig 设置 url映射
- 如何使用 asp.net 4.0 新特性 路由功能 有助于seo优化 给一个 asp.net web项目(网站项目) 增加路由功能 ,继承,给根据路由生成的url的结尾,增加一个有利于seo优化的斜杠 /,跳转到一个路由生成的url页面
- 清清楚楚asp.net ( 六 ) : web.config (转)
- asp.net中web.config设置错误页error.html
- ASP.NET项目站点配置Web.Config文件
- ASP.NET-ASP.NET配置(web.config)无法连接到SQL Server 数据库的解决方法
- ASP.NET配置文件Web.config
- 认识ASP.NET配置文件Web.config
- ASP.NET配置文件Web.config 详细解释