2011-05-17 12 views
7

मुझे PowerShell का उपयोग करके एक csproj फ़ाइल को संपादित करने में कुछ मदद चाहिए। मुझे मूल रूप से एक नोड का चयन करने और इसे बदलने की जरूरत है।PowerShell के साथ .csproj फ़ाइलों को संपादित करने के लिए कैसे करें - विजुअल स्टूडियो 2010

उदाहरण:

<None Include="T4\WebConfigSettingGeneratorScript.tt"> 
    <Generator>TextTemplatingFileGenerator</Generator> 
    <LastGenOutput>WebConfigSettingGeneratorScript1.txt</LastGenOutput> 
</None> 

मैं इस टैग से TextTemplatingFileGenerator विशेषता को दूर करने की जरूरत है।

उत्तर

10

मैं इस तरह की चीज बहुत करता हूं। मैं एक्सएमएल फाइलों में हेरफेर करने के लिए सहायक कार्यों का एक सेट रखता हूं - विशेष सी # प्रोजेक्ट फाइलें। इसे आज़माएं:

 
param($path) 
$MsbNS = @{msb = 'http://schemas.microsoft.com/developer/msbuild/2003'} 

function RemoveElement([xml]$Project, [string]$XPath, [switch]$SingleNode) 
{ 
    $nodes = @(Select-Xml $XPath $Project -Namespace $MsbNS | Foreach {$_.Node}) 
    if (!$nodes) { Write-Verbose "RemoveElement: XPath $XPath not found" } 
    if ($singleNode -and ($nodes.Count -gt 1)) { 
     throw "XPath $XPath found multiple nodes" 
    } 
    foreach ($node in $nodes) 

     $parentNode = $node.ParentNode 
     [void]$parentNode.RemoveChild($node) 
    } 
} 

$proj = [xml](Get-Content $path) 
RemoveElement $proj '//msb:None/msb:Generator' -SingleNode 
$proj.Save($path) 
+0

बहुत बहुत धन्यवाद। मैं इसे कहां से चलाऊं? क्या आप वर्तमान प्रोजेक्ट या स्टार्टअप प्रोजेक्ट को चुनने का कोई तरीका जानते हैं? –

+0

मैं इसे RemoveTTFileGeneratorNode.ps1 फ़ाइल (PowerShell स्क्रिप्ट फ़ाइल) में रखूंगा और उसके बाद इसे Powerhell प्रॉम्प्ट से चला सकता हूं जो इसे C# प्रोजेक्ट फ़ाइल के पथ को पास कर रहा है। –

+0

पूछने के लिए खेद है, लेकिन ps प्रॉम्प्ट से इसे चलाने के लिए वाक्यविन्यास क्या है? - ईमानदारी से powerhell n00b –

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