Поделиться через


код диагностики MSB4066

В этой статье описывается код ошибки MSB4066.

Текст сообщения

MSB4066: The attribute 'attribute-name' in element 'element-name' is unrecognized.

Замечания

Эта ошибка возникает, когда MSBuild обнаруживает XML-атрибут в файле проекта или целевом файле, который он не распознает. MSBuild проверяет атрибуты элементов в файлах проекта, чтобы убедиться, что они соответствуют правильному синтаксису MSBuild и поддерживаемым атрибутам для каждого элемента.

Возможные причины

Как правило, ошибка вызвана одним из следующих причин:

  • Опечатка в имени атрибута в файле проекта MSBuild (например, .csproj, .vbprojили .proj).
  • Использование неподдерживаемого или устаревшего атрибута в файле проекта.
  • Использование метаданных в атрибуте в версии MSBuild, которая не поддерживает эту конструкцию.
  • Атрибут был добавлен в файл проекта, но не распознается версией MSBuild.

Некоторые элементы схемы, например Choose, не разрешают какие-либо атрибуты, поэтому если вы попытаетесь использовать его, например добавление Condition, вы получите эту ошибку.

Резолюция

  1. Проверьте на наличие опечаток:убедитесь, что имя атрибута указано правильно и соответствует ожидаемой схеме.

  2. Удалить неподдерживаемые атрибуты: перекрестная ссылка на документацию MSBuild, чтобы убедиться, что атрибут действителен для определенного элемента. См. справочник по схеме файла проекта MSBuild.

  3. Используйте синтаксис метаданных, поддерживаемый версией MSBuild: если проблема использует метаданные в качестве атрибута (например, Version="1.0" где Version фактически метаданные, а не атрибут), можно изменить старый синтаксис метаданных.

    <PackageReference Include="System.Diagnostics.Process">
       <Version>1.0</Version>
    </PackageReference>
    

    Поддержка указания метаданных элемента в качестве атрибутов была добавлена между MSBuild 14 и MSBuild 15.

  4. обновить версию MSBuild: если атрибут является новым и не распознан, убедитесь, что вы используете версию MSBuild, которая его поддерживает.

Применимо к

Все версии MSBuild