Как принудительно заменить элемент с помощью преобразования конфигурации в Visual Studio?

Мы знаем, что в Visual Studio есть замечательная функция преобразования Web.config при публикации. Таким образом, мы можем иметь что-то вроде следующего в Web.Release.config, чтобы заменить исходное значение в Web.config:

Web.config:

<add key="SomeKey" value="DebugValue"/>

Web.Release.config:

<add key="SomeKey" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Это все хорошо, если у вас нет опечатки в конфигурации преобразования. Так, например, если у вас есть следующая строка в конфигурации преобразования:

<add key="SomeKeyTypo" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Тогда элемент «SomeKey» не будет заменен, потому что преобразование не найдет ключ и молча напечатает это предупреждение:

...\Web.Release.config: Warning : No element in the source document matches '/configuration/appSettings/add[@key='SomeKeyTypo']'

Проблема заключается в том, что в некоторых ситуациях, например, если вы изменили ключ в основном Web.config и забыли изменить его в Web.Release.config, при публикации есть большая вероятность, что вы не 't читать выходные сообщения публикации, и вы пропустите предупреждение, что может привести к катастрофе, поскольку в вашем приложении будет использоваться значение отладки вместо значения выпуска.

Таким образом, вопрос заключается в том, что когда вы определяете преобразование в Web.Release.config, есть ли способ указать, что данный элемент ДОЛЖЕН быть заменен, и если ключ не найден, throw и ERROR вместо ПРЕДУПРЕЖДЕНИЕ и выйти из публикации с каким-то кодом ошибки?


person kaptan    schedule 05.03.2013    source источник


Ответы (1)


Вы можете установить для параметра Visual Studio значение «Рассматривать предупреждения как ошибки», что приведет к возникновению ошибки, препятствующей завершению задачи «Публикация». Вы даже можете настроить его так, чтобы он рассматривал только это конкретное предупреждение как ошибку.

Вы можете найти диалоговое окно, перейдя на страницы свойств проекта, который вы хотите развернуть, а затем в разделе «Сборка» внизу вы найдете свои параметры.

person atom.gregg    schedule 29.03.2013
comment
Это выглядит как интересный обходной путь, но на удивление кажется, что он не работает для предупреждений преобразования! Я настроил обработку всех предупреждений как ошибок для веб-проекта, в котором есть преобразование, но он по-прежнему обрабатывает их как желтые предупреждения. Это работает для других видов предупреждений, например, когда вы объявляете переменную и не используете ее, но полностью игнорирует предупреждения преобразования! Есть идеи, почему? Может быть, это относится только к предупреждениям компиляции!? - person kaptan; 01.04.2013
comment
Я начал смотреть на это на днях и подумал, что шаг PostBuild, возможно, будет подходящим способом. Я мог бы поискать такое решение позже сегодня и опубликовать результаты. Однако это может быть не так просто, как просто обратить внимание на вывод развертывания. - person atom.gregg; 05.04.2013
comment
Было бы здорово, если бы вы поделились своими выводами :› - person kaptan; 06.04.2013