В настоящее время я создал сценарий 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) или какие-то манипуляции с текстом после сохранения (как таковые ощущаются как нечто вроде клуджа).