从.csproj文件中清除冗余<none remove =“...”>

时间:2018-06-18 14:15:16

标签: visual-studio-2017 csproj

我在dotnet核心项目中复制了一个文件,在项目资源管理器中,无法更改其名称,因此将文件从项目中排除,在文件系统中重命名,然后再次添加到具有不同名称的项目中。现在,在.csproj文件中,存在以下冗余行。

<None Remove="File - Copy of FileX.js"/>

我想删除它,我知道我可以手动编辑.csproj文件,但在我看来应该有更好,更清洁,更友好的方式来摆脱这些冗余行。我找不到一个。

有人能告诉我标准方法吗?

1 个答案:

答案 0 :(得分:0)

我认为你可能会得到一个适用于xml节点的powershell脚本:

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 Remove' -SingleNode
$proj.Save($path)

未经测试,但应该有效。