关于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: Home
public 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

转载随意注明出处

vs发布项目webconfig替换语法的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

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

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

  3. 如何在Android Studio中使用Gradle发布项目至Jcenter仓库

    简述 目前非常流行将开源库上传至Jcenter仓库中,使用起来非常方便且易于维护,特别是在Android Studio环境中,只需几步配置就可以轻松实现上传和发布. Library的转换和引用 博主的 ...

  4. 前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例

    使用vue-cli可以规范项目,提高开发效率,但是使用vue-cli时需要一些ECMAScript6的知识,特别是ES6中的模块管理内容,本章先介绍ES6中的基础与模块化的内容再使用vue-cli开发 ...

  5. 记录.NET Core部署到Linux之发布项目到Linux(2)

    1.选择文件夹发布项目到本地,通过Xftp上传文件到/home/wwwroot下:下面具体介绍下 2.通过Xftp直接拖拽压缩包到linux下,通过命令cd /home/wwwroot目录下;然后输入 ...

  6. Jenkins CI&CD 自动化发布项目实战(下篇)

    Jenkins CI&CD 自动化发布项目实战(下篇) 作者 刘畅 时间 2020-12-04 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...

  7. Jenkins CI&CD 自动化发布项目实战(上篇)

    Jenkins CI&CD 自动化发布项目实战(上篇) 作者 刘畅 时间 2020-11-28 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...

  8. Android 急速发布项目到 JitPack

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

  9. Visual Studio 使用Web Deploy 3.6发布项目

    工具:Web Deploy 3.6 点击下载 (强烈推荐使用独立的Web Deploy 安装包安装) 配置: 1.安装web deploy,安装好之后,点击IIS根目录,此处应有如下图标 另外,需要注 ...

随机推荐

  1. 最强离线安装MySQL_8.0.2方法

    最强离线安装MySQL_8.0.2方法,一次就能安装成功. 按照此方式,离线安装MySQL五分钟都花不到,节省了大量的宝贵时间. 前戏,假设你已经从MySQL官网中获取了下面这个压缩包: 解压之后变成 ...

  2. 在O(n)时间复杂度内找到出现超过一半的数

    #include<iostream> using namespace std; bool solver(const int a[],const int n, int & num) ...

  3. [置顶] spring集成mina 实现消息推送以及转发

    spring集成mina: 在学习mina这块时,在网上找了很多资料,只有一些demo,只能实现客户端向服务端发送消息.建立长连接之类.但是实际上在项目中,并不简单实现这些,还有业务逻辑之类的处理以及 ...

  4. NOIP2017 小凯的疑惑

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的 ...

  5. 分布式服务Dubbo+Zookeeper安全认证

    前言 由于之前的服务都是在内网,Zookeeper集群配置都是走的内网IP,外网不开放相关端口.最近由于业务升级,购置了阿里云的服务,需要对外开放Zookeeper服务. 问题 Zookeeper+d ...

  6. tensorflow MNIST新手教程

    官方教程代码如下: import gzip import os import tempfile import numpy from six.moves import urllib from six.m ...

  7. python爬虫(六)_urllib2:handle处理器和自定义opener

    本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页 ...

  8. Xamarin.iOS + MvvmCross: UIPickerView data binding, SelectedItemChanged event

    UI initialization: _pickerView = new UIPickerView(); _pickerView.ShowSelectionIndicator = true; _pic ...

  9. SQL运行时间

    打开SQL运行时间统计  set timing on; 查询是否有运行时间较长的SQL存在  select a.sid, b.sql_text   from v$session a, v$sqlare ...

  10. poj:4091:The Closest M Points

    poj:4091:The Closest M Points 题目 描写叙述 每到饭点,就又到了一日几度的小L纠结去哪吃饭的时候了.由于有太多太多好吃的地方能够去吃,而小L又比較懒不想走太远,所以小L会 ...