目前,我创建了一个 PowerShell 脚本来检查数百个(是的,数百个)Visual Studio 项目并更新参考以保持一致性,从而修复了许多细微的错误。这适用于能够往返99% 的 XML,以便后续在 Visual Studio 中编辑项目文件不会引入其他更改。
但是,使用XmlDocument.Save()
, EMPTY 元素作为一对保存在同一行..
<StartupObject></StartupObject>
..而不是 Visual Studio 项目编辑器将 EMPTY 元素保存在两行之间的方式..
<StartupObject>
</StartupObject>
这会导致初始提交产生不必要的噪音,当程序员从 Visual Studio 中更新项目时,这些噪音将被重置。
如何XmlDocument
使用 Visual Studio [至少截至 2017 年] 使用的相同格式规则保存 [修改]?
目前,保存是使用显式XmlWriter
并XmlWriterSettings
使用以下配置完成的:
$writerSettings = New-Object System.Xml.XmlWriterSettings
$writerSettings.Indent = $true
$writerSettings.IndentChars = $indent # value stolen previously
$writer = [System.Xml.XmlWriter]::Create($path, $writerSettings)
$xml.Save($writer)
如果使用该XmlDocument.PreserveWhitespace
设置,未修改的节点不受影响。但是,在这种情况下,“格式不正确”的条目不是固定的,并且新节点没有应用正确的缩进/格式。
优选地,这可以通过对保存和/或设置的简单修改而不是自定义编写器(脚本在 PowerShell 中)或一些保存后文本操作(因此感觉有点麻烦)来处理。