Web.config 自动替换值
开发项目中,有些可能会改变的值,如是否记录日志,记录日志路径等,我们都会配置在Web.config的<appSettings></appSettings>节点,
也比如数据库的连接,我们会配置在Web.config的<connectionStrings></connectionStrings>节点。
但是每个开发都会遇到部署的情况,部署的环境可能还不止一套,每个环境连接的数据库都不同,appSettings节点中配置的值可能也不同,如果每次都靠手动去修改这些值,效率非常低下,
那么问题来了,如何改变这种效率低下的情况呢?
其实强大的微软早就为我们准备好了方案,就是利用xdt:Transform和xdt:Locator这两个属性。
不知道大家有没有发现,新建一个MVC项目后,配置文件Web.config有两个嵌套的文件,一个是Web.Debug.config,一个是Web.Release.config,前者是Debug模式使用,后者是Release(发布)模式使用

那么下面就分场景讲解一下如何利用xdt:Transform,xdt:Locator来提升效率
场景1:替换appSettings节点中的某个值
Debug模式下的appSettings配置:

但发布到Release环境时,我需要将value值修改为456789,那么只需要打开Web.Release.config文件,添加如下的代码:
<appSettings>
<add key="WeChat:appid" value="456789" xdt:Transform="Replace" xdt:Locator="Match(key)" /></appSettings>
此时发布项目后,会看到生成的Web.config中,value的值自动变成了456789

场景2:替换整个appSettings节点中的值
Debug模式下的appSettings配置:

但发布到Release模式时,我需要替换所有节点的值,那么只需要打开Web.release.config,添加如下的代码:
<appSettings xdt:Transform="Replace">
<add key="WeChat:appid" value="456789" />
<add key="WeChat:secret" value="secret20170630" />
</appSettings>
此时发布项目后,会看到生成的Web.config中,所有节点的值都被替换了

场景3:替换connectionStrings节点某个数据库连接
Debug模式下的appSettings配置:
<connectionStrings>
<add name="myDB" connectionString="Data Source=.;Initial Catalog=DebugDBName;Persist Security Info=True;User ID=sa;Password=sa;Connect Timeout=120;" providerName="System.Data.SqlClient" />
</connectionStrings>
但发布到Release模式时,我需要替换数据库名为ReleaseDBName,那么只需要打开Web.release.config,添加如下的代码:
<connectionStrings>
<add name="myDB" connectionString="Data Source=.;Initial Catalog=ReleaseDBName;Persist Security Info=True;User ID=sa;Password=sa;Connect Timeout=120;"
providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>
此时发布项目后,会看到生成的Web.config中,数据库名字已经被替换了

本篇博客先总结这三种场景,后续如有其它场景,再持续更新该博客,希望对新人有些帮助,大牛可直接忽略……
Web.config 自动替换值的更多相关文章
- 获取web.config 内的值
获取 System.Configuration.ConfigurationManager.AppSettings[DrugPackageRegistrationName]//获取web.config ...
- C# 获取 与 修改 web.config中的值(修改Xml文件)
定义web.config 中 appSettings 节点 <appSettings> <add key="domainExist" value="fa ...
- 如何修改Web.Config里面的值
0.先添加 <add key="MAXNUM" value="6" /> 1.读取值 string maxNum = ConfigurationMa ...
- 前后台读取Web.config中的值的方法
webconfig <configuration> <appSettings> <add key="Workflow_Url" value=" ...
- Visual Studio 2010 实用功能:使用web.config发布文件替换功能
当建立ASP.NET Web应用程序项目后,默认除了生成web.config外,还生成了web.debug.config与Web.Release.config.顾名思义,根据它们的命名我可以推测到他们 ...
- 【Hello CC.NET】自动化发布时 Web.config 文件维护
在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1.获取源码 2.编译项目 3.集成测试 4.Ftp发布项目 5.创建安装包 6. ...
- CC.NET-自动化发布时 Web.config 文件维护
[Hello CC.NET]自动化发布时 Web.config 文件维护 在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1. ...
- 关于ASP.NET的web.config的小笔记
在ASP和MVC开发中,有一些参数是需要活动更改的,最常见的就是数据库的链接字符串<connectionStrings>节点下配置的.在今天接触的项目中,我又接触到了自定义配置参数,就是可 ...
- C#Unit单元测试之读取Web.config文件
长期一来,我们所完成的项目都没有写单元测试,今天我一时兴起,决定给自己写的代码写单元测试,简单的测试代码分分钟完成了,一运行测试,就懵逼了.没能达到我的预期效果,而是出现图1所示错误. 图1:单元测试 ...
随机推荐
- R语言结合概率统计的体系分析---数字特征
现在有一个人,如何对这个人怎么识别这个人?那么就对其存在的特征进行提取,比如,提取其身高,其相貌,其年龄,分析这些特征,从而确定了,这个人就是这个人,我们绝不会认错. 同理,对数据进行分析,也是提取出 ...
- 让Unity的Inspector面板支持字符限制(restrict)功能
今天在优化红点组件,笔者打算将红点id由10进制改为16进制处理,就打算将红点id字段由uint类型改成string类型,用于填写16进制的字符(因为在Inspector面板里,uint/int类型字 ...
- 关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
一:原型和原型对象: 1.函数的原型prototype:函数才有prototype,prototype是一个对象,指向了当前构造函数的引用地址. 2.函数的原型对象__proto__:所有对象都有__ ...
- 思考一个关于Lambda表达式做为linq条件的问题
有一个集合如下 List<User> users = new List<User> { new User{Name = "1",Aget = 12}, ne ...
- Java IO详解(二)------流的分类
一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中 输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内 ...
- PyCharm的小技巧
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如:代码跳转.智能提示.自动完成.单元测试.版本控制.此外,该IDE提供了一些高级功能, ...
- JEESZ-Redis分布式缓存安装和使用
独立缓存服务器: Linux CentOS Redis 版本: 3.0下面我们针对于Redis安装做下详细的记录:编译和安装所需的包:# yum install gcc tcl创建安装目录:# mkd ...
- window(x64)+IIS+Access发布网站出现HTTP 错误 404.0 - Not Found
我的电脑是window7 64位,昨天用ASP.NET写好一个网页,想用IIS发布到校园局域网,配置好IIS,谁知道最后还是出现问题,截图如下 于是我就上网找解决方案,网上各种版本都有,有的说是文件路 ...
- python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence
python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal m ...
- eval全局作用域和局部作用域的坑!
1.eval 是个函数,他可以被赋值给变量,例如 var evalg = eval; evalg("alert(1)"); 2.eval被赋值时,也会把当前eval所处的变量 ...