Использование this online tester, легко увидеть следующую проблемупреобразования Web.config движущихся объявление пространства имен
У меня есть web.config, который выглядит как:
<?xml version="1.0"?>
<configuration>
<nlog/>
</configuration>
И преобразование, которое выглядит следующим образом:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<xdt:Import assembly="AppHarbor.TransformTester" namespace="AppHarbor.TransformTester.Transforms"/>
<nlog xdt:Transform="Replace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets async="true">
<target name="LogMill" xsi:type="FallbackGroup" returnToFirstOnSuccess="true">
<target xsi:type="LogMillMessageBus"/>
<target xsi:type="File" fileName="..\LogMill-FailSafe.log" layout="${TextErrorLayout}"/>
</target>
</targets>
</nlog>
</configuration>
Но результат не является тем, что я ожидаю, он переносит объявление пространства имен xsi на элемент, который его использует, что приводит к тому, что nlog не может проанализировать конфигурацию с ошибкой Parameter p4 not supported on FallbackGroupTarget
<?xml version="1.0"?>
<configuration>
<nlog>
<targets async="true">
<target name="LogMill" p4:type="FallbackGroup" returnToFirstOnSuccess="true" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">
<target p4:type="LogMillMessageBus" /><target p4:type="File" fileName="..\LogMill-FailSafe.log" layout="${TextErrorLayout}" />
</target>
</targets>
</nlog>
</configuration>
Есть вариант преобразования или синтаксис, который я могу применить, чтобы предотвратить его перемещение объявления пространства имен? Я не мог найти что-нибудь в the documentation
Похоже, просто удалив Xmlns: XSI укомплектовать и просто иметь тип = «...» вместо xsi: type = "..." в файле преобразования работает, но было бы неплохо сохранить декларацию для улучшения редактирования в визуальной студии. – BrandonAGr
Обходной путь (или, может быть, решение? Я не уверен), но если вы повторно разместите пространство имен в исходной конфигурации ' ' и используя '' в вашем преобразовании, то он работает. –
nemesv
У меня была такая же проблема с преобразованиями web.config и nlog. Я избегал этой проблемы, удалив пространство имен в правиле преобразования, поскольку пространство имен действительно действительно необходимо для intellisense при работе в Visual Studio. Это не обязательно в среде выпуска. Я понимаю, что это уже больше года, но думал, что мой комментарий может помочь кому-то. –