Kody błędów weryfikacji pakietu/zestawu

Ten artykuł referencyjny zawiera listę wszystkich kodów błędów generowanych przez walidację pakietu i walidację zestawu.

Lista kodów błędów

Identyfikator diagnostyczny opis Zalecana akcja
PKV001 Brak zasobu czasu kompilacji dla zgodnej platformy. Dodaj odpowiednią platformę docelową do projektu.
PKV002 Brak zasobu czasu wykonywania dla zgodnej platformy i środowiska uruchomieniowego. Dodaj odpowiedni zasób dla odpowiedniego środowiska uruchomieniowego do pakietu.
PKV003 Brak elementu zawartości niezależnego od czasu wykonywania dla zgodnej platformy. Dodaj odpowiednią niezależną strukturę docelową czasu wykonywania do projektu.
PKV004 Brak zgodnego elementu zawartości czasu wykonywania dla elementu zawartości w czasie kompilacji. Dodaj odpowiedni zasób czasu wykonywania do pakietu.
PKV005 Brak zgodnego elementu zawartości czasu wykonywania dla elementu zawartości w czasie kompilacji i obsługiwanego identyfikatora środowiska uruchomieniowego. Dodaj odpowiedni zasób czasu wykonywania do pakietu.
PKV006 Struktura docelowa jest porzucana w najnowszej wersji. Dodaj odpowiednią platformę docelową do projektu.
PKV007 Para docelowa struktury i identyfikatora środowiska uruchomieniowego jest porzucana w najnowszej wersji. Dodaj odpowiednią strukturę docelową i identyfikator RID do projektu.
CP0001 W porównaniu do zestawu brakuje typu, wyliczenia, rekordu lub struktury widocznej poza zestawem, jeśli jest to wymagane. Dodaj brakujący typ do zestawu, w którym brakuje go.
CP0002 Brak elementu członkowskiego widocznego poza zestawem w porównaniu, jeśli jest wymagany do obecności. Dodaj brakujący element członkowski do zestawu, w którym brakuje go.
CP0003 Część tożsamości zestawu (nazwa, token klucza publicznego, kultura, atrybut retargetable lub wersja) nie jest zgodna po obu stronach porównania. Zaktualizuj tożsamość zestawu, aby obie strony odpowiadały.
CP0004 Nie można odnaleźć pasującego zestawu po jednej stronie porównania podczas tworzenia mapowania zestawów. Upewnij się, że brakujący zestaw został dodany do pakietu.
CP0005 Element abstract członkowski został dodany po prawej stronie porównania z niezaznaczonego typu. Usuń element członkowski lub nie dodaj do niego adnotacji jako abstract.
CP0006 Element członkowski został dodany do interfejsu bez domyślnej implementacji. Jeśli platforma docelowa i wersja języka obsługują domyślne implementacje, dodaj jeden lub po prostu usuń element członkowski z interfejsu.
CP0007 Typ podstawowy w hierarchii klas został usunięty z jednej z porównywanych stron. Dodaj typ podstawowy z powrotem. (Nowy typ podstawowy można wprowadzić w hierarchii, jeśli jest to zamierzone).
CP0008 Interfejs podstawowy został usunięty z hierarchii interfejsu z jednej z porównywanych stron. Dodaj interfejs z powrotem do hierarchii.
CP0009 Typ, który był nierozpoznany po jednej stronie, był adnotacjami, jak sealed po drugiej stronie porównywanej. Usuń adnotację sealed z typu .
CP0010 Podstawowy typ wyliczenia został zmieniony z jednej strony na drugi. Zmień typ bazowy z powrotem na poprzednio.
CP0011 Wartość elementu członkowskiego w wyliczenia została zmieniona z jednej strony na drugą. Zmień wartość elementu członkowskiego z powrotem na poprzednią wartość.
CP0012 Słowo virtual kluczowe zostało usunięte z elementu członkowskiego, który był wcześniej wirtualny. virtual Dodaj słowo kluczowe z powrotem do elementu członkowskiego.
CP0013 Słowo virtual kluczowe zostało dodane do elementu członkowskiego, który wcześniej nie był wirtualny. virtual Usuń słowo kluczowe z elementu członkowskiego.
CP0014 Atrybut został usunięty z elementu członkowskiego, który miał go wcześniej. Dodaj atrybut z powrotem do elementu członkowskiego.
CP0015 Argumenty przekazane do atrybutu zostały zmienione z jednej strony na drugą. Zmień argumenty na atrybut z powrotem na to, co wcześniej były.
CP0016 Atrybut został dodany do elementu członkowskiego, który wcześniej go nie miał. Usuń atrybut z elementu członkowskiego.
CP0017 Nazwa parametru metody została zmieniona z jednej strony na drugą. Zmień nazwę parametru z powrotem na poprzednią wartość.
CP0018 Słowo sealed kluczowe zostało dodane do elementu członkowskiego interfejsu, który wcześniej nie został zapieczętowany. sealed Usuń słowo kluczowe z elementu członkowskiego interfejsu.
CP0019 Widoczność elementu członkowskiego została zmniejszona z jednej strony do drugiej. Zmień widoczność elementu członkowskiego z powrotem na to, co było wcześniej.
CP0020 Widoczność elementu członkowskiego została rozszerzona z jednej strony do drugiej. Zmień widoczność elementu członkowskiego z powrotem na to, co było wcześniej.
CP1001 Nie można odnaleźć pasującego zestawu w katalogach wyszukiwania. (Nie dotyczy walidacji pakietu, tylko w przypadku bezpośredniego używania interfejsu API Compat). Podaj katalog wyszukiwania podczas ładowania pasujących zestawów przy użyciu polecenia AssemblySymbolLoader.
CP1002 Nie można odnaleźć zestawu referencyjnego podczas ładowania zestawów do porównania w rozwiązanych katalogach dla bieżącej platformy docelowej. Dołącz ścieżkę katalogu, w której można znaleźć ten zestaw, używając następującego elementu MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Nie podano katalogu wyszukiwania dla nazwy docelowej platformy docelowej, dla którego jest uruchomiona weryfikacja pakietu, dla którego jest uruchomiony interfejs API Compat. Podaj katalog wyszukiwania, aby znaleźć odwołania dla tej platformy docelowej przy użyciu następującego elementu MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Jak pominąć

Poszczególne identyfikatory diagnostyczne można pominąć na jeden z następujących sposobów:

Plik pomijania

Aby pominąć błędy zgodności dla zamierzonych zmian, dodaj plik CompatibilitySuppressions.xml do projektu. Walidacja pakietu i walidacja zestawu używają tego samego formatu pliku pomijania.

Ten plik można wygenerować automatycznie na jeden z dwóch sposobów:

  • /p:GenerateCompatibilitySuppressionFile=true Przekazując, jeśli pakujesz projekt z wiersza polecenia.
  • Dodając następującą właściwość do pliku projektu: <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

Plik pomijania wygląda następująco.

<?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 określa identyfikator błędu do pomijania.
  • Target określa, gdzie w kodzie należy pominąć identyfikatory diagnostyczne.
  • Left określa lewy operand porównania interfejsu APICompat.
  • Right określa prawy operand porównania interfejsu APICompat.
  • IsBaselineSuppression Określa, czy należy zastosować pomijanie do weryfikacji punktu odniesienia () lubtrue nie (false).

Opcja kompilatora NoWarn

Można również pominąć poszczególne identyfikatory diagnostyczne za pomocą flagi kompilatora NoWarn — na pakiet lub globalnie.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
    <!-- The following NoWarn suppresses PKV001 project-wide -->
    <NoWarn>$(NoWarn);PKV001</NoWarn>
  </PropertyGroup>
</Project>