Корневой элемент отсутствует при преобразовании простой конфигурации с помощью Remove
У меня есть простой XML
<?xml version="1.0"?>
<rootElement>
...
</rootElement>
И я преобразовываю это с:
<?xml version="1.0"?>
<rootElement xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Remove">
...
</rootElement>
И тогда я получаю это исключение во время сборки:
Exception while replacing configuration-variables in: D:\...\rootelement.config
17:52:12Error
System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
17:52:12Error
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
17:52:12Error
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
17:52:12Error
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
17:52:12Error
at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
17:52:12Error
at Calamari.Integration.ConfigurationVariables.ConfigurationVariablesReplacer.ReadXmlDocument(String configurationFilePath) in Y:\work\14ffc968155e4956\source\Calamari\Integration\ConfigurationVariables\ConfigurationVariablesReplacer.cs:line 62
Обратите внимание, у меня есть около 10 других похожих конфигурационных файлов, которые преобразуются без проблем, но это единственный файл, который выполняет "Удалить" вместо "Заменить", поэтому я подозреваю, что это может быть проблемой.
Кроме того, когда я просматривал трансформацию локально, она работает нормально, так что, возможно, это проблема развертывания Octopus и этой библиотеки Calamari.
1 ответ
Для документов XML требуется корневой элемент, поэтому в результате преобразования получается недопустимый документ XML.
Эта ошибка возникает после преобразования, когда Octopus пытается заменить переменные в файле. XML-документ недействителен, поэтому его нельзя загрузить.
Преобразование необходимо изменить, чтобы оно привело к действительному документу XML.