Web.Release.config 和 Web.Debug.config
Web.Release.config 和 Web.Debug.config通过在web.release.config或web.debug.config中按指定的格式查找和替换节点内容,可以实现web.config按生成环境的不同生成不同的版本,方便调试和发布。
在开发asp.net应用程序时,往往想在debug和release环境下使用不同的配置,而web.config文件却只有一个,我们可以在Web.Debug.config中写下debug环境下的配置,然后在web.release.config中写下release环境下特有的配置。
一、Web.Release.config 和 Web.Debug.config实例
1、Web.Release.config 的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
-->
<connectionStrings>
<add name="AppConnection"
connectionString="发布环境连接字符串"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
2、Web.Debug.config 的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
-->
<connectionStrings>
<add name="AppConnection"
connectionString="测试环境连接字符串"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
3、Web.config 的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="AppConnection" connectionString="默认连接字符串"/>
<add name="TestCommon" connectionString="公共使用的连接字符串"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
4、发布 后Web.config 的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<connectionStrings> <!--注意这里的字符串变了,变成了release配置文件中的字符串 -->
<add name="AppConnection" connectionString="发布环境连接字符串"/>
<add name="TestCommon" connectionString="公共使用的连接字符串"/>
</connectionStrings>
<system.web>
<compilation targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
二、配置说明
xdt:Transform="SetAttributes" xdt:Locator="Match(name)" 的意思
把Web.config中connectionStrings对应name为AppConnection的节点属性替换。
1、locator属性
1)Match
用匹配的属性名去替换Web.config中的属性值
例如:Web.config中找到匹配name为Norhwind的节点值替换为相应配置文件的值。
<connectionStrings>
<add name="Northwind" connectionString="connection string detail"
providerName="System.Data.SqlClient"
xdt:Transform="Replace"
xdt:Locator="Match(name)" />
</connectionStrings>
2)Condition
基于XPath,在Locator可以用表达式判断匹配
<connectionStrings>
<add name="Northwind"
connectionString="connection string detail"
providerName="System.Data.SqlClient"
xdt:Transform="Replace"
xdt:Locator="Condition(@name=’Northwind or @providerName=' System.Data.SqlClient')" />
</connectionStrings>
2、 Transform 属性
1)Replace 表示所有匹配的节点都是替换
2)Remove 删除第一匹配的元素。
3)RemoveAll
4)Insert 插入从父节点中插入
例如:authorization中插入<deny users="*" />
<authorization>
<deny users="*" xdt:Transform="Insert"/>
</authorization>
5)SetAttributes 设置属性值