5

Tigris コミュニティ タスクを使用して、XMLUpdate タスクを使用してさまざまな AppSettings キーを更新しています。

ただし、system.net セクションにノードを追加して、プロキシを設定したいと考えています。

プロパティを宣言しました

<PropertyGroup>
    <proxy>&lt;defaultProxy&gt; &lt;proxy usesystemdefault="False" proxyaddress="http://IPADDRESS:PORT" /&gt; &lt;/defaultProxy&gt;</proxy>
  </PropertyGroup>

XMLUpdate タスクは次のようになります。

<XmlUpdate
 Prefix="n"
 Namespace="http://schemas.microsoft.com/.NetConfiguration/v2.0"
 XmlFileName="$(BuildDir)\Builds\_PublishedWebsites\Presentation\Web.config"
 XPath="/n:configuration/n:system.net"
 Value="$(proxy)"  />

これにより Web 構成が更新されますが、プロパティ グループから直接更新されます。つまり、山かっこのエスケープ文字は変換されません。誰にもアイデアはありますか?

4

1 に答える 1

7

XmlUpdate タスクの代わりに XmlMassUpdate を使用できます。

<ProjectExtensions>
  <defaultProxy>
    <proxy usesystemdefault="False" proxyaddress="http://IPADDRESS:PORT"/>
  </defaultProxy>
</ProjectExtensions>

<Target Name="SubstituteFromWebConfig">
  <XmlMassUpdate 
    NamespaceDefinitions="msb=http://schemas.microsoft.com/developer/msbuild/2003;n=http://schemas.microsoft.com/.NetConfiguration/v2.0"
    ContentFile="$(BuildDir)\Builds\_PublishedWebsites\Presentation\Web.config" 
    ContentRoot="/n:configuration/n:system.net"
    SubstitutionsFile="$(MSBuildProjectFullPath)"
    SubstitutionsRoot="/msb:Project/msb:ProjectExtensions/msb:system.web" />
</Target> 

この例では、ContentFile のContentRoot指すノードを、SubstitutionsFile (現在の MSBuild ファイル) のSubstitutionsRootが指すノードに置き換えます。

この手法では、MSBuild エンジンによって無視されるプロジェクト ファイルに XML を追加できるようにするMSBuild の ProjectExtensions 要素を利用します。

(または、XmlMassUpdate を使用したくない場合は、ProjectExtensions および XmlUpdate のノードで XmlRead タスクを使用できます。)

于 2009-02-03T07:07:46.083 に答える