ASP.Net 4.0新特性:Web.Config Transformation

8138 ワード

一般的には、Webアプリケーションを本番環境に正式に導入する前に、複数の環境で使用されています.これらの環境には、開発者開発環境、品質保証(QA)、およびユーザ検収テスト(UAT)/一時保存/事前生産環境が含まれる場合があります.これらの環境でアプリケーションを変換する場合、プロファイルの多くの設定を変更する必要があります.たとえば、データベース・リンク文字列の構成、ファイルの保存場所、サーバのアドレス、ポートなどです.
VS 2010ではXML-Document-transform engineを提供することでこの問題を解決してくれます.
XML-Document-transform engineを使用するには、XML-Document-transformネーミングスペースを参照します.次のコードに示します.
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

変換の動作原理:


Microsoft Visual Studio 2010がコンパイルされると、コンパイラは自動的に現在選択するコンパイルオプションに従って、対応するウェブを選択する.選択項目名をコンパイルするconfigとweb.configはマージ変換を行い、その後、配置環境に対応するwebを生成する.configファイル、下図のように:
 
上の図では、2つのキープロパティが表示されます.
  • xdt:Transform
  • xdt:Locator

  • この2つのプロパティで設定できる値は、次のタイプです.
    へんかん
    説明
    xdt:Transform=“Replace”
    最初に一致するノードを置換
    xdt:Transform=“Remove”
    最初に一致するノードをクリア
    xdt:Transform=“RemoveAll”
    一致するすべてのノードをクリア
    xdt:Transform=“Insert”
    末尾にノードを挿入
    xdt:Transform=“SetAttributes(attributeNames)”
    既存の属性の値の作成または変更
    xdt:Transform=“RemoveAttributes(attributeNames)”
    属性をクリア(存在する場合)
    xdt:Transform=“InsertBefore(XPath)”
    指定したXpathの前にノードを挿入
    xdt:Transform=“InsertAfter(XPath)”
    Xpath指定後にノードを挿入
    ロケータ
    説明
    xdt:Locator=“Match(attributeName)”
    属性名はカンマで区切ることができます
    xdt:Locator=“Condition(xPath Predicate)”
    xdt:Locator="Condition(@name='Northwind'or@providerName='System.Data.SqlClient')などのXpath述語はすべて受け入れられます.
    xdt:Locator=“Xpath(/configuration/…)”
    「XPath(//system.web)」などの複雑なXpathを受け入れることができます.

    簡単な例を次に示します。


    次の図に示すように、Webプロジェクトでコンパイルオプションを設定します.
    独自のパブリッシュ状況に基づいて定義されたコンパイルオプションを新規作成します.
    次の図に示すように、テスト環境をローカルに配置する構成を確立します.デフォルトではCreate new project configurationsが選択されています.
    Solution ExplorerでWebを選択します.config、右クリックメニューで「Add Config Transforms」項目をクリックします.以下の図です.
     
    「Web.LocalDeploy.config」ファイルが複数表示されます.
    テスト期間のために、私たちはweb.configファイルには次の設定があります.
    <configuration>
      <appSettings>
        <add key="KeyOne" value="A value"/>
      
       appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />

    Web.LocalDeploy.configファイルには次の設定があります.
    
       xml version="1.0"?>
     
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      <appSettings>
        <add key="KeyOne" value="B Value" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
       appSettings>   <system.web> <compilation xdt:Transform="RemoveAttributes(debug)" />    system.web>  configuration>

    Web.LocalDeploy.configファイルでは、LocalDeployを使用してパブリッシュする場合、appSettingsプロパティKeyOneの値を変更するとともに、compilationでdebugを開く機能を削除する必要があることがわかります.
    その後、プロジェクトをパブリッシュすると、対応するプロファイルが自動的に生成されます.パブリッシュオプションは次のとおりです.
    簡単にするために、ここでは別のディレクトリに公開し、D:/123/1ディレクトリの下でwebを表示します.configファイルには、次の情報が表示されます.
    <configuration>
      <appSettings>
        <add key="KeyOne" value="B Value"/>
      
       appSettings>
      <system.web>
        <compilation targetFramework="4.0" />

     

    まとめ:


    ASPを通過する.Net 4.0新特性:Web.Config Transformationでは、異なる使用環境でのwebを自動的に生成することができます.config.とても強くて、いいです.
    しかし、これは私の期待と少し違います.例えば、私の構成はwebではありません.configファイルでは、この新しいプロパティは使用されません.
    また、開発環境で導入環境をシミュレートするテストは、やはり手動でwebを修正する.configファイル.この特性を使う能力はありません
    参考資料:
    ASP.Net4.0に23の機能を追加http://www.cnblogs.com/zhuqil/archive/2010/01/05/1639405.html(中国語翻訳)http://www.codeproject.com/KB/aspnet/Whatis_New_ASP_Net_4.aspx(英語原文)
    ASP.NET 4.0新機能--Web.Config Transformation http://www.cnblogs.com/worksguo/archive/2009/08/29/1556307.html
    Web.config変換の概要(Transformation Overview)http://www.cnblogs.com/Intersense/archive/2009/12/25/1632212.html
    Web.config Transformation Overview http://msdn.microsoft.com/zh-cn/library/dd465326(en-us,VS.100).aspx
    Visual Studio 2010におけるWeb開発http://msdn.microsoft.com/zh-cn/library/ee851840.aspx
    Web Deployment: Web.Config Transformation http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
    Visual Studio 2010: Web.config transforms http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx