博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Web.Config Transformation配置灵活的配置文件
阅读量:7045 次
发布时间:2019-06-28

本文共 2088 字,大约阅读时间需要 6 分钟。

发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等。如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻烦的事情。

Web.Config Transformation能够在不同的发布环境下,产生不同的web.config文件,非常方便和实用。

阅读目录:

一、Web.Config Transformation

二、一个实际的例子

三、Web.Config Transformation具体语法

一. Web.Config Transformation

项目中有个默认的web.config, 还可以定义格式为web.[name].config文件, 这个配置文件定义的规则, 在发布的时候, 会对web.config文件进行修改。

默认项目中, 会创建Web.Debug.config和Web.Release.config文件,分别对应于Debug和Release环境。

 

二. 一个实际的例子

假如我们要常常发布到测试服务器上,测试服务器和开发时候的connectionstring是不同的,看看如何使用Web.Config Transformation来解决这个问题。

1. 添加Test配置

菜单Build->Configuration Manager, 就能看到如下的配置窗口, 添加一个新的配置Test.

 

2. 添加Test config Transformation文件

在web.confg上,点击右键,Add Config Transform, VS就会为刚刚新建的Test配置新增Transformation文件 Web.Test.config

 

3. 修改Web.Test.config文件

下面的Web.Test.config中能够替换web.config中的connectionstring, 关键是这一段

xdt:Transform="Replace", 指的是用来做替换操作

xdt:Locator="Match(name), 指的是匹配规则,这里是匹配name
意思是用Web.Test.config中的这个配置节用来替换web.config中name为MyDB的配置

4. 检查发布的结果

选择在Test配置下publish网站,你能看到最终的web.config文件,已经实现了替换connection string.

 

三. Web.Config Transformation具体语法

参考博客

1 :locator属性

下面有个表,来详细列举locator的语法

(1)Match;

这里你需要就是在你直接匹配的属性名。     

Engine会再你的Web.config中找到匹配name为Norhwind的就用上面的配置文件图替换。

(2)Condition
基于XPath,在Locator中应用有逻辑性的判断表达式。

上面就是Name属性匹配‘Norhwind’的或providerName匹配System.Data.SqlClient的配置文件节点都会被替换。

(3)XPath
这个就是直接写XPath,,这里是XPath的标准

这里你会发现,这里可以写一些列的表达式。

2: Transform 属性

(1) Replace

表示所有匹配的节点都是替换

其实这里描述文件时web.release.config,将要替换的文件时Web.config .

(2) Remove
删除第一匹配的元素。

(3)RemoveAll

删除所有匹配的元素

(4)Insert

插入从父节点中插入,(authorization中插入<deny users="*" />)

(5)SetAttributes

直接设置Attributes

(6)RemoveAttributes

删除出Attributes

(7)InsertAfter (XPath)

通过匹配 XPath的表达式的,找到节点,并子节点后面插入 XML

(8)InsertBefore (XPath)

通过匹配 XPath的表达式的,找到节点,并子节点前面插入 XML

(9)XSLT (filePath)

可以在外部定义 XSLT文件,来替换Web.cofig文件。

转载于:https://www.cnblogs.com/JustRun1983/p/3418844.html

你可能感兴趣的文章
[转]MD5(2)-破解MD5之我见
查看>>
mianxiangduixiang
查看>>
CSS自定义变量属性——像less,sass那样在css中使用变量(译)
查看>>
在 Android 上离线导览模型
查看>>
深入css之去除inline-block元素之间的多余间隙
查看>>
关于cronjob的用法
查看>>
对于fork()用法的初步探讨
查看>>
Javascript 数组循环遍历之forEach
查看>>
HTML & CSS之小白初入江湖
查看>>
写一个简单的webserver
查看>>
通过 InnoSetup 美化安装界面
查看>>
一次不怎么愉快的滴滴面试经历
查看>>
Android的资源管理器的创建过程
查看>>
php验证身份证函数
查看>>
[使用 Weex 和 Vue 开发原生应用] 1 如何配置开发环境
查看>>
红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
查看>>
Linus 发文宣布Linux Kernel 5.0 正式发布
查看>>
定制你的敏捷方法:以结果为导向
查看>>
关于Visual Studio 2019的前期详情
查看>>
PWA即将推向所有Chrome平台
查看>>