12

MSBuildおよびMSBuild コミュニティ タスク( XMLUpdate およびXMLMassUpdateを使用) を使用して、Web.config のさまざまなセクションを更新していますが、1 つ困惑しています。私が持っている場合:

<configuration>
    <nlog throwExceptions="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <targets>
            <target name="file" xsi:type="File" fileName="${logDirectory}\SomeLog.log" layout="${message}"/>
        </targets>
    </nlog> 
</configuration>

そして、私はのを置き換えようとしfileNameますtarget

<XmlUpdate XmlFileName="$(BuildDir)\Builds\%(Configuration.Identity)\_PublishedWebsites\Presentation\Web.config"
           XPath="//configuration/nlog/targets/target[@fileName]"
           Value="${logDirectory}\SomeLog_%(Configuration.Identity).log" />

更新するものが見つからないと報告されているので、私の質問は、ファイル名属性を更新するにはどうすればよいですか?


編集: NLog セクションが独自の名前空間を定義しているため、これは名前空間の衝突のケースでしょうか?


更新:名前空間を宣言する投稿された回答は機能しません。

4

3 に答える 3

21

最初の問題は、属性を更新するための xpath が正しくないことです。現在、「ターゲット」と呼ばれるノードの「fileName」属性ではなく、「fileName」と呼ばれる属性を持つ「ターゲット」ノードを探しています。

必要な xpath は次のとおりです: /configuration/nlog/targets/target/@fileName

名前空間の問題については、Preet Sangha が正しい答えを持っています。名前空間プレフィックスを使用する必要があります。すべてのサブ要素はその名前空間にあるため、これをすべてのサブ要素にも適用する必要があります。

最終的な声明は次のとおりです。

<XmlUpdate
  Prefix="n"
  Namespace="http://www.nlog-project.org/schemas/NLog.xsd"
  XmlFileName="output.xml"
  XPath="//configuration/n:nlog/n:targets/n:target/@fileName"
  Value="${logDirectory}\UpdateWorked.log" />
于 2009-08-19T18:54:15.567 に答える
4

ここでは、名前空間の要件を示しています

<XmlUpdate
   Namespace="http://schemas.microsoft.com/.NetConfiguration/v2.0"
   XmlFileName ....

他の属性を更新できますか?

于 2009-08-13T13:12:13.237 に答える