开发项目中,有些可能会改变的值,如是否记录日志,记录日志路径等,我们都会配置在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 自动替换值的更多相关文章

  1. 获取web.config 内的值

    获取 System.Configuration.ConfigurationManager.AppSettings[DrugPackageRegistrationName]//获取web.config ...

  2. C# 获取 与 修改 web.config中的值(修改Xml文件)

    定义web.config 中 appSettings 节点 <appSettings> <add key="domainExist" value="fa ...

  3. 如何修改Web.Config里面的值

    0.先添加 <add key="MAXNUM" value="6" /> 1.读取值 string maxNum = ConfigurationMa ...

  4. 前后台读取Web.config中的值的方法

    webconfig <configuration> <appSettings> <add key="Workflow_Url" value=" ...

  5. Visual Studio 2010 实用功能:使用web.config发布文件替换功能

    当建立ASP.NET Web应用程序项目后,默认除了生成web.config外,还生成了web.debug.config与Web.Release.config.顾名思义,根据它们的命名我可以推测到他们 ...

  6. 【Hello CC.NET】自动化发布时 Web.config 文件维护

    在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1.获取源码 2.编译项目 3.集成测试 4.Ftp发布项目 5.创建安装包 6. ...

  7. CC.NET-自动化发布时 Web.config 文件维护

    [Hello CC.NET]自动化发布时 Web.config 文件维护   在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1. ...

  8. 关于ASP.NET的web.config的小笔记

    在ASP和MVC开发中,有一些参数是需要活动更改的,最常见的就是数据库的链接字符串<connectionStrings>节点下配置的.在今天接触的项目中,我又接触到了自定义配置参数,就是可 ...

  9. C#Unit单元测试之读取Web.config文件

    长期一来,我们所完成的项目都没有写单元测试,今天我一时兴起,决定给自己写的代码写单元测试,简单的测试代码分分钟完成了,一运行测试,就懵逼了.没能达到我的预期效果,而是出现图1所示错误. 图1:单元测试 ...

随机推荐

  1. Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)

    是时候系统学习 Dockerfile 了.下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM指定 base 镜像. MAINTAINER设置镜像的作者,可以是任 ...

  2. javaWeb学习总结(10)- Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 web资源:例如Jsp, Servlet, 静 ...

  3. 线程机制、CLR线程池以及应用程序域

    最近在总结多线程.CLR线程池以及TPL编程实践,重读一遍CLR via C#,比刚上班的时候收获还是很大的.还得要多读书,读好书,同时要多总结,多实践,把技术研究透,使用好. 话不多说,直接上博文吧 ...

  4. 12款Linux系统恢复工具

    电脑死机,硬盘崩溃,花巨大的money搞个急救保护器……这都是计算机的阴暗面.时间一直这样走着,走着,不定哪天背点儿.对于电脑损坏造成的损失,着急抓狂毫无意义.相反,使用恰当的工具反而会最小化损失.你 ...

  5. Windows平台下python2和3的兼容问题解决

    很多朋友都安装了python2和3,因为用些库例如scapy,不是scrapy,python3下面都是错,那么怎么让python2和3共存呢. 像一般的程序员,达到如下效果 Windows平台下的兼容 ...

  6. 将 FFmpeg 移植到 Android平台 (完整版)

    首先需要去FFmpeg的官网http://www.ffmpeg.org/去下载FFmpeg的源码,目前的版本号为FFmpeg3.3(Hilbert). 下载的文件为压缩包,解压后得到ffmpeg-3. ...

  7. 搭建Elasticsearch集群常见问题

    一.ES安装方法: Linux用户登录(bae),我们用的是5.3版本的包.从官网下载: curl -L -O https://artifacts.elastic.co/downloads/elast ...

  8. 主存与Cache的地址映射

    最近在复习计算机体系结构,选用的教材是名闻遐迩的<计算机体系结构 量化研究方法 第五版>(Computer Architecture A Quantitative Approach), 关 ...

  9. python 创建mysql数据库

    昨天用shell脚本创建数据库,涉及java调用,比较折腾,改用python直接创建数据库,比较方便,好了,直接上代码,相关注释也添加了 # _*_encoding:UTF-8_*_import My ...

  10. find的用法

    find在Linux系统中和其它工具,如sed.awk.grep等结合起来用,非常有用. 1.列出系统中所有属于root用户的“set uid”文件 #find / -perm 4755 –uid 0 ...