2009-02-02 17 views
5

में एक XML नोड को अद्यतन करने के लिए सबसे अच्छा तरीका है, मैं XMLUpdate कार्य का उपयोग कर विभिन्न ऐप सेटिंग्स सेटिंग्स को अद्यतन करने के लिए टिग्रीस समुदाय कार्यों का उपयोग कर रहा हूं।MSBuild

अब, हालांकि मैं प्रॉक्सी सेट अप करने के लिए 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)" /> 

की तरह इस वेब config लेकिन यह संपत्ति समूह से सीधे अपडेट हो जाता है यानी के लिए भागने वर्ण परिवर्तित नहीं करता है अद्यतन करता घोषित कोण ब्रैकेट्स। क्या किसी के पास कोई विचार है?

उत्तर

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> 

इस उदाहरण में हम SubstitutionsFile (वर्तमान MSBuild फ़ाइल) में SubstitutionsRoot द्वारा बताया एक के बाद नोड में ContentRoot द्वारा बताया ContentFile बदलें।

इस तकनीक MSBuild ProjectExtensions तत्व जो एक परियोजना फ़ाइल कि MSBuild इंजन द्वारा नजरअंदाज कर दिया जाएगा करने के लिए XML जोड़ने करने की अनुमति देता का लाभ लेता है।

(या यदि आप XmlMassUpdate का उपयोग नहीं करना चाहते हैं, तो आप XmlRead कार्य को ProjectExtensions और XmlUpdate में नोड पर उपयोग कर सकते हैं।)

 संबंधित मुद्दे