ошибка веб-конфигурации: нераспознанный атрибут «xmlns: xdt». Обратите внимание, что имена атрибутов чувствительны к регистру.

Я пытаюсь развернуть приложение в AppHarbor и следую их инструкциям по изменению моего web.config, чтобы он использовал их экземпляр на сервере Sql.

При запуске решения я получаю сообщение об ошибке, упомянутое в теме:

Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive.

Единственная ветка, которую я нашел об этой проблеме, была этой. Но добавление строк предварительной сборки, удаление папки obj и перестроение не принесли никакого решения. Он продолжает сталкиваться с этим исключением в строке:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

Заранее спасибо.


person Marco    schedule 06.11.2013    source источник


Ответы (5)


Я бы проверил, есть ли у вас следующая строка в верхней части файла преобразования.

<?xml version="1.0"?>

Если вы подтвердите, что он есть, я также проверю, что следующий отсутствует в вашем фактическом преобразованном файле web.config.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

Я обнаружил, что расширение web essentials незаменимо для устранения подобных ошибок перед развертыванием.

Вы можете просто щелкнуть правой кнопкой мыши файл преобразования и выбрать предварительный просмотр в Visual Studio, и, если у вас возникнут какие-либо проблемы, вы можете исследовать/исправить их локально.

Основы работы в Интернете 2012

http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6

person hutchonoid    schedule 13.11.2013
comment
Я только что понял, что ваш ответ тоже правильный, но я неправильно его понял. Я как-то проигнорировал не в вашем предложении. - person Marco; 16.11.2013
comment
Хороший, пожалуйста, примите ответ. Я ответил за 2 дня до другого ответа. :) - person hutchonoid; 16.11.2013
comment
Я должен был поститься с щедростью, но ответ за тобой. Извиняюсь. - person Marco; 16.11.2013
comment
Так мы просто удалим эту строку? - person Zapnologica; 22.11.2018
comment
@Zapnologica, если она есть, да - person hutchonoid; 23.11.2018

Убедитесь, что строка, выдающая ошибку:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

Нет в вашем основном файле web.config. Это строка для файла преобразования web.config. По сути, когда вы создаете новый проект, вы получаете файл Web.config с одним или несколькими вложенными файлами web.config, названными в соответствии с профилями сборки для вашего решения, например:

Web.config
    Web.Release.config
    Web.Debug.config

Ваш родительский файл web.config должен начинаться с <configuration> и ничего из xmlns:xdt. Ваши вложенные файлы web.config (те, которые используются для преобразования вашего родительского файла web.config) должны начинаться с этой строки.

Если вы не знакомы с преобразованиями web.config, это позволяет VS автоматически изменять элементы вашей конфигурации в зависимости от типа сборки проекта (используется для изменения строк подключения, включения и выключения отладки и т. д.).

Кроме того, проверьте сообщения в блоге AppHarbor для получения инструкций по работе с преобразованиями Web.config. Поскольку вы никогда не использовали AppHarbor, похоже, вам может потребоваться внести некоторые незначительные изменения в проект с вашей стороны, чтобы преобразования работали правильно. Наконец, вам может потребоваться убедиться, что ваши файлы преобразования web.config действительно включены в сборку/развертывание в гавани приложений

person Tommy    schedule 15.11.2013
comment
О Боже мой ... и это строит. - person Marco; 16.11.2013
comment
Спасибо за объяснение, что это не должно быть в ОСНОВНОМ web.config. Он нужен вам в преобразованных версиях web.config (или, в моем случае, app.config). - person levininja; 10.12.2014
comment
мы просто удалим эту строку - person Zapnologica; 22.11.2018

Очень четкое описание Томми процесса трансформации позволило мне решить очень сложную проблему. У меня есть проект ASP.NET MVC 4, который выдавал ошибку при попытке публикации из Visual Studio 2012. Я продолжал получать сообщение об ошибке

Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive.

В ошибке говорилось, что он находится в файле web.config, но на самом деле его там нет. Это было в Web.Release.Config. Я пробовал многие из рекомендуемых решений в Преобразование Web.config: не распознано атрибут 'xmlns:xdt'. Обратите внимание, что имена атрибутов вводятся с учетом регистра

Я удалил содержимое каталога obj, и это сработало один или два раза, а затем перестало работать. Я удалил атрибут из Web.Release.Config,

xmlns:xdt=http://schemas.microsoft.com/XML-Document-Transform

но это дало мне ошибки. Я старался

This is kind of a workaround, but you may add the following line to your pre-build commands:
del $(ProjectDir)obj\* /F /S /Q

Right click your project > Properties > Build Events > Pre-build.

Это сработало один раз, но не во второй раз.

Я попробовал более длинную версию вышеуказанного решения.

del "$(ProjectDir)obj\*" /F /Q
del "$(ProjectDir)obj\$(ConfigurationName)\AspnetCompileMerge\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\CSAutoParameterize\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\Package\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\ProfileTransformWebConfig\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TempPE\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TransformWebConfig\*" /F /S /Q

но это дало мне много ошибок. У доктора сайта было интересное решение, но оно требовало загрузки предварительной версии программного обеспечения с GitHub, и я не хотел рисковать, если в этом нет необходимости. http://blogs.thesitedoctor.co.uk/tim/Trackback.aspx?guid=7988f7bc-947c-4134-ab52-af22770b639c Затем я нашел статью Томми, и она натолкнула меня на мысль. Я удалил это xmlns:xdt=http://schemas.microsoft.com/XML-Document-Transform из этой строки

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

Когда я это сделал, мне пришлось удалить

xdt:Transform="RemoveAttributes(debug)"

из этой строки

<compilation xdt:Transform="RemoveAttributes(debug)" />

Это сработало для меня. Вероятно, не очень хорошая идея удалять преобразование, которое удаляет атрибуты отладки при публикации/выпуске проекта, но, похоже, это решает проблему.

person Richard Leyton    schedule 06.03.2014
comment
Извините, но если вы потеряете трансформацию из вашего релиз-конфига, весь смысл будет потерян? - person cederlof; 29.05.2019

Я удалил папку выпуска и отладки в Obj и пересобрал код. Это сработало для меня.

person vaibhav nag    schedule 16.12.2019

Я знаю, что это старый вопрос, но ни один из этих ответов не помог мне.

Что действительно сработало, так это удаление содержимого папки {project}/bin/Debug.

В моем случае ошибка указала файл {project}.dll.config внутри этой папки Debug как содержащий ошибку. (Возможно, я мог бы просто удалить один файл, но удаление всего этого, похоже, с большей вероятностью исправит и другие потенциальные ошибки.)

Мои файлы app.config установлены для Do not copy в Properties, поэтому, возможно, их изменение также может решить проблему, заменив старую версию файла.

person computercarguy    schedule 06.04.2020