Как редактировать файлы .csproj с помощью PowerShell - Visual Studio 2010 - PullRequest
7 голосов
/ 17 мая 2011

Мне нужна помощь в редактировании файла csproj с помощью PowerShell.Мне в основном нужно выбрать узел и изменить его.

Пример:

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

Мне нужно удалить атрибут TextTemplatingFileGenerator из этого тега.

1 Ответ

10 голосов
/ 17 мая 2011

Я много такого рода делаю.Я держу вокруг себя набор вспомогательных функций для манипулирования файлами 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...