9

Web DeployのParameters.xmlシステムを使用してXML要素をweb.configに挿入することは可能ですか?

XmlFileパラメーター"kind"は必要なものに最も近いように見えますが、その属性matchはXPathクエリのみを受け入れ、XPathクエリで存在しない要素を指定できないようです。(むしろ、存在しない要素を指定できます。WebDeployはそれを無視します。)具体的には、これを変換したいと思います。

<configuration>
   <plugins>
      <add name="bleh"/>
   </plugins>
</configuration>

これに:

<configuration>
   <plugins>
      <add name="bleh">
        <option name="foo" value="bar"/>
      </add>
   </plugins>
</configuration>

(残念ながらoption、この特定のプラグインシステムは認識されない/空のオプションを好まないため、web.configに空の要素を事前にストックすることはできません。)

アイデアをありがとう!

4

4 に答える 4

3

このようなことは、WebDeployV3から可能になりました。公式ドキュメントを参照してください。

これは、ターゲットxmlファイルのルートを含むすべてのノードにnewNodeを追加するparameters.xmlファイルの1つの例です。

<parameters>
  <parameter name="Additive" description="Add a node" defaultValue="&lt;newNode />" tags="">
    <parameterEntry kind="XmlFile" scope=".*" match="//*" />
  </parameter>
</parameters>
于 2016-01-27T12:29:10.263 に答える
1

Xpathは、XMLドキュメントのクエリ言語にすぎません。Xpath自体でXMLドキュメントを変更したり、新しいXMLドキュメントを作成したりすることはできません

XMLドキュメントを変換するために特別に設計された言語はXSLTと呼ばれます。

これがあなたの問題を解決する非常に短くて単純なXSLT変換です

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="add[@name='bleh']">
  <xsl:copy>
   <xsl:copy-of select="@*"/>
   <option name="foo" value="bar"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

この変換が提供されたXMLドキュメントに適用される場合

<configuration>
    <plugins>
        <add name="bleh"/>
    </plugins>
</configuration>

必要な正しい結果が生成されます:

<configuration>
   <plugins>
      <add name="bleh">
         <option name="foo" value="bar"/>
      </add>
   </plugins>
</configuration>
于 2011-04-26T13:38:25.427 に答える
1

configSourceの使用を検討しましたか?これにより、構成ファイルを複数の小さなファイルに分割できます。web.configは次の場所から取得されます。

<configuration>
   <plugins>
      <add name="bleh"/>
   </plugins>
</configuration>

configSourceを使用してこれに:

<configuration>
   <plugins configSource="plugins.config"/>
</configuration>

欠点は、展開中に構成値を編集するための優れたUIが得られないことです。パラメータ化を機能させることができない場合は、検討する必要があります。インストールUIが目的の場合は、plugin.xmlファイルを作成および変更できる管理者用の編集ツールをコーディングできます。

于 2011-05-01T21:51:40.070 に答える
0

通常のweb.config変換プラクティスを使用できますか?http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

以下のコードを実行すると、すべてのセクションが以下のセクションに置き換えられます。実際、質問の内容は、セクション全体を、Web.Release.configファイルの場合に提供したセクションに置き換える必要があります。

Web.Release.config:

<plugins>
  <add name="bleh">
     <option name="foo" value="bar"/>
  </add>
</plugins>
于 2011-04-19T19:30:56.043 に答える