vs发布项目webconfig替换语法

简介: 关于vs发布项目时webconfig替换语法也是最近才学到的东西,写这篇文章就当是作个备忘录吧,如果能帮助别人能够学习到webconfig如何替换那就再好不过了。1.认识一下web项目下的web.Debug.config和web.release.config的作用刚开始学习的时候就没听说过这两个文件的作用,也是挺悲哀的,还是在工作中了解到的。

关于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

转载随意注明出处


目录
相关文章
|
6月前
vscode点击通过import引入方法名或模块名跳转其定义的文件
window点击ctrl(MAC点击command)+通过import引入的文件、方法等到,跳转到其定义的页面
437 0
Idea:通过Live Template自定义模板(类注释、方法注释)
Idea:通过Live Template自定义模板(类注释、方法注释)
1298 0
Idea:通过Live Template自定义模板(类注释、方法注释)
|
5月前
|
JSON Java 数据格式
使用`MockMvc`额外的补充和高级用法
使用`MockMvc`额外的补充和高级用法
59 3
|
6月前
|
Oracle Java 关系型数据库
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
117 0
|
11月前
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
69 0
|
前端开发 JavaScript IDE
【Java基础知识3】Java注释:单行、多行、文档注释(如何通过 javadoc 命令生成代码文档、如何在IEDA配置自动为所有的类都添加创建者和创建日期)
【Java基础知识3】Java注释:单行、多行、文档注释(如何通过 javadoc 命令生成代码文档、如何在IEDA配置自动为所有的类都添加创建者和创建日期)
415 0
【Java基础知识3】Java注释:单行、多行、文档注释(如何通过 javadoc 命令生成代码文档、如何在IEDA配置自动为所有的类都添加创建者和创建日期)
|
存储 数据安全/隐私保护
CE修改器入门:代码替换功能
某些游戏重新开始时,数据会存储在与上次不同的地方, 甚至游戏的过程中数据的存储位置也会变动。在这种情况下,你还是可以简单几步搞定它。这次我将尽量阐述如何运用"代码替换"功能,第五关的数值每次启动教程的时候都会存放在内存不同的位置,所以地址列表中的固定地址是不起作用的。
411 0
CE修改器入门:代码替换功能
|
JSON Shell 测试技术
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名,绑定数据到结构体等等
194 0
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等
|
SQL 前端开发 Java
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
|
SQL 前端开发 NoSQL
SpringBoot 项目,如何优雅的把接口参数中的空白值替换为 null 值?
查询的方法是Get方法: 前端是通过url加参数传过来的,如果有一个参数值为空的时候,由于setEntity() 并不过滤空白,执行sql的时候 会把""作为参数去当做查询条件,查询就出现了问题:
SpringBoot 项目,如何优雅的把接口参数中的空白值替换为 null 值?