2011-05-17 83 views
7

我需要一些幫助來編輯使用PowerShell的csproj文件。我基本上需要選擇一個節點並改變它。如何使用PowerShell編輯.csproj文件 - Visual Studio 2010

實施例:

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

我需要從該標籤中刪除TextTemplatingFileGenerator屬性。

回答

10

我做這種事情很多。我圍繞一組幫助函數來處理XML文件 - 特定的C#項目文件。試試這個:

 
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

非常感謝。我從哪裏運行? 您是否知道選擇當前項目或啓動項目的方法? – 2011-05-17 18:20:12

+0

我會把它放在RemoveTTFileGeneratorNode.ps1文件(PowerShell腳本文件)中,然後從powershell提示符運行它,將它傳遞到C#項目文件的路徑。 – 2011-05-17 19:57:29

+0

不好意思問,但是在ps提示符下運行它的語法是什麼? - Sincerely powershell n00b – 2011-05-17 20:35:26

相關問題