के साथ सर्जिकल एक्सएमएल संपादन मैं परियोजना संदर्भों के बड़े पैमाने पर संपादन करने के लिए पावरहेल का उपयोग कर csproj फ़ाइलों के साथ काम कर रहा हूं। अब तक मैं निम्नलिखित लाइनों का उपयोग कर ProjectReferences पर शामिल विशेषताओं को संपादित करने में कामयाब रहे है:पावरहेल
$projectXml = [xml](Get-Content $_.Project.FullName)
Add-TfsPendingChange -edit $_.Project.FullName -ErrorAction Stop
$projectXml | Select-Xml -namespace @{msb = "http://schemas.microsoft.com/developer/msbuild/2003"} -xpath "//msb:ProjectReference[msb:Project='$projectGuid']" | Select-Object -ExpandProperty Node | foreach { $_.Include = "$newPath" }
$projectXml.Save($_.Project.FullName)
यह काम करता है, और उचित ProjectReferences पर विशेषता शामिल के रूप में मैं उम्मीद बदल देता है। हालांकि, बहुत सारे अतिरिक्त "हानिरहित" परिवर्तन किए गए हैं, जैसे कि सभी टैग को अपनी लाइन पर स्वरूपित करना, उदा। <FileUpgradeFlags></FileUpgradeFlags>
<FileUpgradeFlags>
</FileUpgradeFlags>
इस तरह यह इन साइड इफेक्ट भी नहीं है कि के रूप में एक संपादन प्रदर्शन करने के लिए कोई तरीका है हो जाता है?
संपादित करें: जो अन्य कारणों के लिए इस पोस्ट पाता है, का चयन करें-MsBuildXml सिर्फ एक आवरण समारोह मैं चारों ओर का चयन-Xml ने लिखा है कि पूर्व लोड करता है MSBuild नाम स्थान के साथ नाम स्थान पैरामीटर है, और बाद में नोड संपत्ति का विस्तार किसी को स्पष्टता के लिए ।
मुझे यह जानकर उत्सुकता है कि अतिरिक्त व्हाइटस्पेस आपके लिए एक समस्या क्यों उत्पन्न करता है। –
मुख्य रूप से क्योंकि यह परिवर्तनों की समीक्षा में अतिरिक्त कार्य करता है, और यह भी क्योंकि यह स्रोत नियंत्रण में अनावश्यक मंथन बनाता है। पैथोलॉजिकल मामले में, वीएस इन सभी पंक्ति-टूटे हुए टैग को सिंगल-लाइन तत्वों में दोबारा सुधारने का विकल्प चुनता है, इस प्रकार अगली बार सीएसपीआरजे दस्तावेज़ में बदलाव किया जाता है, और दोनों एक परेशान प्रारूप में बंद हो जाते हैं। – bwerks
यह उत्तर दूसरों के लिए अधिक लागू करने के लिए Select-MsBuildXml के बजाय चयन-एक्सएमएल के साथ किया जा सकता है (और दिखाया गया)? –