我正在使用Powershell处理csproj文件,以执行项目引用的大规模编辑。到目前为止,我已经通过以下代码成功编辑了 ProjectReferences 中 Include 属性的值:
$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上的Include属性,效果很好。但是会有许多其他“无害”的更改,例如将所有标签格式化为单独的行,例如
<FileUpgradeFlags></FileUpgradeFlags>
变成了
<FileUpgradeFlags>
</FileUpgradeFlags>