Подтвердить что ты не робот

Преобразование Web.config: нераспознанный атрибут 'xmlns: xdt'. Обратите внимание, что имена атрибутов чувствительны к регистру

Я получаю эту странную непоследовательную ошибку в проекте MVC 3.0 Когда я создаю проект, иногда появляется следующее сообщение об ошибке:

Непризнанный атрибут 'xmlns: xdt'. Обратите внимание, что имена атрибутов чувствительны к регистру.

Это относится к стандартному файлу tranformation web.config(копия Web.Release.config) Других ошибок или предупреждений нет. Это происходит в режиме отладки и выпуска. Иногда он очищается, если я очищаю решение

BEGIN UPDATE

Обнаружена проблема. В файле MVC Project (MyProject.csproj) я установил представления сборки в true

<MvcBuildViews>true</MvcBuildViews>

После возврата к false вышеуказанная ошибка исчезнет. Я хотел бы иметь сборку вида, поскольку она останавливает много глупых ошибок кода представления и т.д. И является улучшением производительности (страницы предварительно скомпилированы вместо jit)

Кто-нибудь знает, что это вызывает ошибку? это ошибка?

END UPDATE

<?xml version="1.0"?>

<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!--
    In the example below, the "SetAttributes" transform will change the value of 
    "connectionString" to use "ReleaseSQLServer" only when the "Match" locator 
    finds an atrribute "name" that has a value of "MyDB".

    <connectionStrings>
      <add name="MyDB" 
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
  -->
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
    <!--
      In the example below, the "Replace" transform will replace the entire 
      <customErrors> section of your Web.config file.
      Note that because there is only one customErrors section under the 
      <system.web> node, there is no need to use the "xdt:Locator" attribute.

      <customErrors defaultRedirect="GenericError.htm"
        mode="RemoteOnly" xdt:Transform="Replace">
        <error statusCode="500" redirect="InternalError.htm"/>
      </customErrors>
    -->
  </system.web>
</configuration>
4b9b3361

Ответ 1

Я столкнулся с той же проблемой. Вы найдете много шуток, связанных с MvcBuildViews и различными условиями ошибки. Но никто не упоминает эту конкретную ошибку. Быстрое исправление, которое сработало для меня, - удалить содержимое каталога "obj" для затронутого веб-проекта, а затем восстановить.

Ответ 2

Это своего рода обходной путь, но вы можете добавить следующую строку в свои команды pre-build:

del $(ProjectDir)obj\* /F /S /Q

Щелкните правой кнопкой мыши свой проект > Свойствa > События сборки > Предварительная сборка

Ответ 3

Это работает с Continuous Integration и WebDeploy:

Эта проблема возникает в момент, когда я устанавливаю

<MvcBuildViews>true</MvcBuildViews>

в моем файле проекта, который мне нужен.

После прочтения и тестирования всего, что я нашел об этой проблеме, у меня есть wokraround, который также работает с WebDeploy через MSBuild

MSBUild.exe ... /p:DeployOnBuild=true

Вам (только) необходимо удалить подпапку TransformWebConfig в вашей сборной папке во время событий до и после сборки. Он работает даже с серверами непрерывной интеграции, которые ломаются, если нет папки

Командная строка события Pre-build:

if exist "$(ProjectDir)obj\$(ConfigurationName)\transformwebconfig\" del "$(ProjectDir)obj\$(ConfigurationName)\transformwebconfig\*" /F /S /Q

Командная строка события после сборки:

if exist "$(ProjectDir)obj\$(ConfigurationName)\transformwebconfig\" del "$(ProjectDir)obj\$(ConfigurationName)\transformwebconfig\*" /F /S /Q

Это даже отлично работает с Resharper, который иногда путается, если вы удалите всю папку obj.

Обязательно установите для параметра Run the post-build event значение always!!

UPDATE: Заменена отладка и выпуск с помощью $(ConfigurationName) и удалена результирующая повторяющаяся строка

Ответ 4

Я разрешаю свой конфликт, делая то же самое, что сказал Иов. Удаление атрибута

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

Из основного Web.config и оставьте его в файле Web.debug.config и Web.release.config

Ответ 5

Существует другое обходное решение от Microsoft Team. Подробнее см. здесь.

Просто скопируйте этот фрагмент в свой файл .csproj или .vbproj:

<PropertyGroup>
  <_EnableCleanOnBuildForMvcViews Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='' ">true</_EnableCleanOnBuildForMvcViews>
</PropertyGroup>
<Target Name="CleanupForBuildMvcViews" Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='true' and '$(MVCBuildViews)'=='true' " BeforeTargets="MvcBuildViews">
  <ItemGroup>
    <_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**\Package\**\*" />
    <_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**\TransformWebConfig\**\*" />
    <_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**\CSAutoParameterize\**\*" />
    <_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**\TempPE\**\*" />
  </ItemGroup>
  <Delete Files="@(_TempWebConfigToDelete)" />
</Target>

Это автоматизирует процесс очистки папки "obj" с помощью объектов сборки.

Ответ 6

Я нашел, что это работает лучше для меня:

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

в противном случае сборка жалоб на edmxResourcesToEmbed исчезает.

Ответ 7

просто удалите атрибут xmlns: xdt из web.config, но сохраните его в файле web.release.config и web.debug.config.

Ваше преобразование все равно будет работать - и ваш веб-сайт также будет.

Ответ 8

Я тоже это видел. В частности, он был воспроизводимым при изменении между конфигурациями сборки в Visual Studio.

Мое обходное решение ранее заключалось в том, чтобы удалить все в папке \obj, но, внимательно прочитав мой web.config, я обнаружил, что у него был некоторый ошибочный текст, сидящий за пределами элемента (т.е. он был недопустимым XML).

По-видимому, преобразования config просто поглощали исключение при попытке выполнить преобразование.

Исправлена ​​ошибка моего web.config, и теперь все работает как ожидается.

Надеюсь, это поможет кому-то

Ответ 9

Я также столкнулся с этой проблемой. Для меня это было вызвано тем, что я создал новую конфигурацию отладки под названием "DevDebug". Я исправил его, сделав копию web.debug.config, названный web.DevDebug.config и добавив его в проект.

Затем, когда я попытался запустить компилятор aspnet, он был удовлетворен тем, что смог найти правильную конфигурационную конфигурацию файла конфигурации для слияния.

Ответ 10

Я просто изменяю ниже на web.config

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

to

<configuration>

Исправлена ​​проблема

Ответ 11

  • Щелкните правой кнопкой мыши проект, нажмите Опубликовать
  • Перейти к Настройки Параметры публикации файла
  • Снимите флажок Прекомпилировать во время публикации

Это предотвратит запуск файла web.debug.config/web.release.config файла web.config, если вы используете публикацию Visual Studio.