关于vs发布项目时webconfig替换语法也是最近才学到的东西,写这篇文章就当是作个备忘录吧,如果能帮助别人能够学习到webconfig如何替换那就再好不过了。

1.认识一下web项目下的web.Debug.config和web.release.config的作用

刚开始学习的时候就没听说过这两个文件的作用,也是挺悲哀的,还是在工作中了解到的。

我们新建一个MVC的项目Web.config下一定会有web.Debug.config和web.Release.config这两个文件。如图

肯定是他们的作用的,作用还挺大的。在发布项目的时候我们经常会换掉数据库的连接字符串或者将调试模式去掉。这个操作不够人性化。这两个文件的作用就是你在发布的时候去替换Web.Config文件中的节点。Debug模式就调用web.Debug.config,反之也是一样的。

2.为什么要用webconfig转换?

我相信在工作几乎所有人都会采用这种方式,第一次用的时候感觉还挺惊艳的,当然包括我。如果用一句通俗的话来解释,可以这么说,你在发布项目的时候对web.config节点做的一些修改,都可以在这两个文件用相应的语法去完成。没必要每次发布都去改。
首先转换的语句是写在web.Debug.config或则web.Release.config里面的。关于“用于web应用程序项目部署的web.config转换语法”,可以熟悉一下微软的,写的很全面
https://msdn.microsoft.com/zh-cn/library/dd465326(VS.100).aspx。下面这段话也是引用微软的文档

Web.config 文件通常包括根据应用程序的运行环境而必须不同的设置。 例如,在部署 Web.config 文件时,您可能必须更改数据库连接字符串或禁用调试。 对于 Web 应用程序项目,ASP.NET 提供了一些工具,用于自动完成在部署这些项目时更改(转换)Web.config 文件的过程。 对于要部署到的每个环境,您将创建一个转换文件,该文件仅指定原始 Web.config 文件和适用于该环境的已部署 Web.config 文件之间的差异。

转换文件是一个 XML 文件,该文件指定在部署 Web.config 文件时应如何更改该文件。 转换操作通过使用在 XML-Document-Transform 命名空间(映射到 xdt 前缀)中定义的 XML 特性来指定。 XML-Document-Transform 命名空间定义两个特性:Locator 和 Transform。 Locator 特性指定要以某种方式更改的 Web.config 元素或一组元素。 Transform 特性指定要对 Locator 特性所查找的元素执行哪些操作。

2.发布项目web.release.config中去替换数据库连接字符串

我们就先来写一个简单的事例体会一下。在发布项目时,在web.release.config中替换掉web.config中的数据库连接字符串,首先在web.config中写一个数据库连接字符串,他是这样的:
  <connectionStrings><add name="conn" connectionString="数据库连接字符串" providerName="System.Data.SqlClient"/></connectionStrings>

好的,我们将他打印出来:

    public class HomeController : Controller{// GET: Homepublic ActionResult Index(){ViewBag.str = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;return View();}}

如图:

当我们发布项目的时候,肯定会对数据库的连接字符串做修改,所有我们需要在web.release.config中写一些替换的语句

<?xml version="1.0" encoding="utf-8"?><!-- 有关使用 web.config 转换的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"><connectionStrings><add name="conn"  connectionString="线上数据库连接字符串" xdt:Transform="Replace" xdt:Locator="Match(name)"/></connectionStrings><system.web><compilation xdt:Transform="RemoveAttributes(debug)" /></system.web>
</configuration>

稍微解释一下:

1.首先要在 XML-Document-Transform 命名空间(映射到 xdt 前缀)中定义的 XML 特性来指定,也就是节点中声明

 xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform

2.Transform是要干什么,replace就是替换掉的意思。locator就是定位器的意思,就是查找元素。

 xdt:Transform="Replace" xdt:Locator="Match(name)

语法挺简单的。现在我们来发布项目,发布文件系统的形式之后我们会在web.config文件中看到已经被替换了

我们发现的确是整个节点都被替换了,注意的是要name区分大小写。

文章有点简单,更详细的语法可以看看微软的https://msdn.microsoft.com/zh-cn/library/dd465326(VS.100).aspx

作者:张林

标题: vs发布项目webconfig替换语法 原文地址:http://blog.csdn.net/kebi007/article/details/60321701

转载随意注明出处

转载于:https://www.cnblogs.com/zhangmumu/p/7374780.html

vs发布项目webconfig替换语法相关推荐

  1. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  2. android studio 库项目,Android Studio 发布项目到jcenter库

    第一次发布项目到jcenter,虽然网上有很多教程了,但是过程还是比较曲折.不过最终还是找到简单的方式,使用com.novoda.bintray-release实现发布. 认识jcenter 我们经常 ...

  3. tomcat通过conf-Catalina-localhost目录发布项目详解

    Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择. 因为这样对tomcat的***性最小,只 ...

  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目

    基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目 转载于:https://github.com/Meowv/Blog 既然开发完成了,还是拿出来溜溜比较好,本篇是本 ...

  5. linux上运行项目,发布项目到 Linux 上运行 Core 项目

    目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行 ...

  6. Android 急速发布项目到 JitPack

    转载请标明出处: http://www.cnblogs.com/zhaoyanjun/p/5942616.html 出自[赵彦军博客] 2016/10/09 前言:以前写过一篇 Android stu ...

  7. 大数据WEB阶段(九)Myeclipse中配置Tomcat并发布项目

    在myeclipse配置tomcat ,并将项目发布到tomcat中 一.在myeclipse中配置tomcat 二.发布项目到tomcat中 注意项目名称是自己要发布的项目 , 然后finish . ...

  8. Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置

    本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...

  9. 用IDEA把SpringBoot项目打成jar发布项目 不要用 在上面有可以用的

    用IDEA把SpringBoot项目打成jar发布项目 2019年03月27日 11:08:51 小天努力学java 阅读数 235更多 所属专栏: SpringBoot学习 版权声明:本文为博主原创 ...

最新文章

  1. ContentProvider初探
  2. git reset revert 回退回滚取消提交返回上一版本
  3. MySQL中如何查询数据(下)
  4. 【转】窗口之间的主从关系与Z-Order
  5. mysql为什么要转es_MySQL用得好好的,为什么要转ES?
  6. 黑盒之嵌入式操作系统鲁棒性研究
  7. 格雷编码Python解法
  8. 猫眼java开发暑期实习_校招|猫眼 Android日常实习一面面经
  9. 直播为什么不使用WebRTC?
  10. 使用ISynchronizeInvoke无痛地创建线程安全用户界面
  11. 【LOJ2127】「HAOI2015」按位或
  12. ACL技术原理和实验(华为设备)
  13. Ajax案例:简易的购书网页
  14. 东方时尚驾校科目一网上视频快速通过方法
  15. 差距:我是如何一步步落后于别人
  16. 计算机运用基础2020四川传媒学院考题,2020年计算机基础考试题EY[含答案](15页)-原创力文档...
  17. SpringBoot 集成FluentMyBatis 框架之集成分页功能
  18. 岁月温柔-6 出院后忐忑不安的妈妈
  19. android电话、短信黑白名单拦截、电话录音
  20. 计算机辅助设计软件应用答案,专科《计算机辅助设计软件地应用》_试卷_答案.docx...

热门文章

  1. 如果你走投无路时,会不会去摆摊做小生意?
  2. 你觉得人生最好的年龄段是哪段时间?
  3. 优秀的人都有一个共同点
  4. 那些真正有用的经验,都是和高手过招换来的
  5. 互联网赚钱,必须聚焦这三件事
  6. 持有数字货币的手机丢了,数字货币还能找回来吗?该注意些什么?
  7. 朋友的身份证被骗子注册了支付宝开通了花呗,消费了三千被催债才知道花呗被盗如何处理?
  8. PoA共识引擎算法实现分析(2)
  9. go按行读取数据的坑
  10. OpenCV调整图像的亮度