vs發佈項目webconfig替換語法

關於vs發佈項目時webconfig替換語法也是最近才學到的東西,寫這篇文章就當是做個備忘錄吧,若是能幫助別人可以學習到webconfig如何替換那就再好不過了。html

1.認識一下web項目下的web.Debug.config和web.release.config的做用

剛開始學習的時候就沒據說過這兩個文件的做用,也是挺悲哀的,仍是在工做中瞭解到的。

咱們新建一個MVC的項目Web.config下必定會有web.Debug.config和web.Release.config這兩個文件。如圖web


確定是他們的做用的,做用還挺大的。在發佈項目的時候咱們常常會換掉數據庫的鏈接字符串或者將調試模式去掉。這個操做不夠人性化。這兩個文件的做用就是你在發佈的時候去替換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 文件之間的差別。ide

轉換文件是一個 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文件中看到已經被替換了spa


咱們發現的確是整個節點都被替換了,注意的是要name區分大小寫。.net

文章有點簡單,更詳細的語法能夠看看微軟的https://msdn.microsoft.com/zh-cn/library/dd465326(VS.100).aspxdebug

做者:張林調試

標題: vs發佈項目webconfig替換語法 原文地址:http://blog.csdn.net/kebi007/article/details/60321701

轉載隨意註明出處

相關文章
相關標籤/搜索