zoukankan      html  css  js  c++  java
  • vs发布项目webconfig替换语法

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

  • 相关阅读:
    python 正则表达式提取返回内容
    python session保持登录,新增地址,并删除,由观察可知,address_id决定删除的内容;
    unittest执行顺序,使用unittest.main()按照test开头,由09,AZ,az的顺序执行; 可使用TestSuite类的addTest方法改变执行顺序;
    开源系统DVWA,ECshop
    链接(url)中不能有汉字,遇到汉字,需要使用quote转换之后使用
    python 登录并获取session,使用session新增ecshop的草稿
    unittest单元测试,基于java的junit测试框架
    jmeter插件扩展
    使用响应的json数据判断订单查询是否成功;
    C言语教程第五章:函数(2)
  • 原文地址:https://www.cnblogs.com/zhangmumu/p/7374780.html
Copyright © 2011-2022 走看看