Коды ошибок проверки пакета и сборки
В этой справочной статье перечислены все коды ошибок, созданные проверкой пакета и проверкой сборки.
Список кодов ошибок
ИД диагностики | Description | Рекомендуемое действие |
---|---|---|
PKV001 | Отсутствует ресурс времени компиляции для совместимой платформы. | Добавьте соответствующую целевую платформу в проект. |
PKV002 | Отсутствует ресурс времени выполнения для совместимой платформы и среды выполнения. | Добавьте необходимый ресурс для соответствующей среды выполнения в пакет. |
PKV003 | Отсутствует ресурс, независимый от времени выполнения, для совместимой платформы. | Добавьте в проект соответствующую целевую платформу, независимую от времени выполнения. |
PKV004 | Отсутствует совместимый ресурс времени выполнения для ресурса времени компиляции. | Добавьте в пакет соответствующий ресурс времени выполнения. |
PKV005 | Отсутствует совместимый ресурс времени выполнения для ресурса времени компиляции и поддерживаемый идентификатор среды выполнения. | Добавьте в пакет соответствующий ресурс времени выполнения. |
PKV006 | Целевая платформа удалена в последней версии. | Добавьте соответствующую целевую платформу в проект. |
PKV007 | Целевая платформа и пара идентификаторов среды выполнения удалены в последней версии. | Добавьте в проект соответствующую целевую платформу и RID. |
CP0001 | Тип, перечисление, запись или структура, видимые за пределами сборки, отсутствует в сравниваемой сборке, но должен присутствовать. | Добавьте отсутствующий тип в сборку, в которой отсутствует. |
CP0002 | Элемент, видимый за пределами сборки, отсутствует в сравниваемой сборке, но должен присутствовать. | Добавьте недостающий элемент в сборку, в которой он отсутствует. |
CP0003 | Часть удостоверения сборки (имя, маркер открытого ключа, язык и региональные параметры, переназначаемый атрибут или версия) не совпадают в сравнении. | Обновите удостоверение сборки, чтобы обе стороны соответствовали. |
CP0004 | Совпадающая сборка не найдена на одной стороне сравнения при создании сопоставления сборок. | Убедитесь, что недостающая сборка добавлена в пакет. |
CP0005 | Элемент abstract был добавлен в правую сторону сравнения с неуправляемым типом. |
Удалите элемент или не заметите его как abstract . |
CP0006 | В интерфейс был добавлен элемент без реализации по умолчанию. | Если целевая платформа и версия языка поддерживают реализации по умолчанию, добавьте одну из них или просто удалите элемент из интерфейса. |
CP0007 | Базовый тип в иерархии классов был удален из одной из сравниваемых сторон. | Добавьте базовый тип обратно. (Новый базовый тип можно ввести в иерархии, если это предназначено.) |
CP0008 | Базовый интерфейс был удален из иерархии интерфейсов на одной из сравниваемых сторон. | Добавьте интерфейс обратно в иерархию. |
CP0009 | Тип, который был незамечен на одной стороне, был аннотирован, как sealed на другой сравниваемой стороне. |
Удалите заметку sealed из типа. |
CP0010 | Базовый тип перечисления изменился с одной стороны на другую. | Измените базовый тип обратно на то, что было ранее. |
CP0011 | Значение элемента в перечислении изменилось с одной стороны на другую. | Измените значение элемента обратно на то, что было ранее. |
CP0012 | virtual Ключевое слово был удален из элемента, который ранее был виртуальным. |
virtual Добавьте ключевое слово обратно в элемент. |
CP0013 | Ключевое слово virtual был добавлен в элемент, который ранее не был виртуальным. |
virtual Удалите ключевое слово из элемента. |
CP0014 | Атрибут был удален из элемента, который ранее имел его. | Добавьте атрибут обратно в элемент. |
CP0015 | Аргументы, передаваемые атрибуту, изменились с одной стороны на другую. | Измените аргументы на атрибут обратно на то, что они были ранее. |
CP0016 | Атрибут был добавлен в элемент, который ранее не использовал его. | Удалите атрибут из члена. |
CP0017 | Имя параметра метода изменилось с одной стороны на другую. | Измените имя параметра обратно на то, что было ранее. |
CP0018 | Ключевое слово sealed был добавлен в элемент интерфейса, который ранее не был запечатан. |
sealed Удалите ключевое слово из элемента интерфейса. |
CP0019 | Видимость элемента была сокращена с одной стороны на другую. | Измените видимость члена обратно на то, что было ранее. |
CP0020 | Видимость элемента была расширена с одной стороны на другую. | Измените видимость члена обратно на то, что было ранее. |
CP1001 | Не удалось найти соответствующую сборку в каталогах поиска. (Неприменимо для проверки пакетов только при использовании API Compat напрямую.) | Укажите каталог поиска при загрузке соответствующих сборок с помощью AssemblySymbolLoader . |
CP1002 | Не найдена ссылочная сборка при загрузке сборок для сравнения в разрешенных каталогах для текущей целевой платформы. | Укажите путь к каталогу, в котором можно найти эту сборку, используя следующий элемент MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | Не указан каталог поиска для моникера целевой платформы, для которого проверка пакетов выполняет API Compat. | Укажите каталог поиска, чтобы найти ссылки на эту целевую платформу, используя следующий элемент MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
Как отключить
Вы можете отключить отдельные диагностические идентификаторы в любом из следующих способов:
- Через файл подавления.
- С помощью флага компилятора.
NoWarn
Файл подавления
Чтобы отключить ошибки совместимости для преднамеренных изменений, добавьте в проект файл CompatibilitySuppressions.xml. Проверка пакета и проверка сборки используют тот же формат файла подавления.
Этот файл можно создать автоматически одним из двух способов:
/p:GenerateCompatibilitySuppressionFile=true
Передавая при упаковке проекта из командной строки.- Добавив следующее свойство в файл проекта:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
Файл подавления выглядит следующим образом.
<?xml version="1.0" encoding="utf-8"?>
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:A.B.DoStringManipulation(System.String)</Target>
<Left>lib/netstandard2.0/A.dll</Left>
<Right>lib/net6.0/A.dll</Right>
<IsBaselineSuppression>false</IsBaselineSuppression>
</Suppression>
</Suppressions>
DiagnosticId
указывает идентификатор ошибки, которую нужно подавить.Target
указывает, где в коде для подавления диагностических идентификаторов.Left
указывает левый операнд для сравнения APICompat.Right
указывает правый операнд для сравнения APICompat.IsBaselineSuppression
указывает, следует ли применять подавление к базовой проверке (true
) или нет (false
).
Параметр компилятора NoWarn
Вы также можете отключить отдельные диагностические идентификаторы с помощью флага компилятора NoWarn
либо для каждого пакета, либо глобально.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>