Bagikan melalui


Kode kesalahan validasi paket/rakitan

Artikel referensi ini mencantumkan semua kode kesalahan yang dihasilkan oleh validasi paket dan validasi rakitan.

Daftar kode galat

ID diagnostik Deskripsi Tindakan yang direkomendasikan
PKV001 Aset waktu kompilasi untuk kerangka kerja yang kompatibel hilang. Tambahkan kerangka kerja target yang sesuai ke proyek.
PKV002 Aset run-time untuk kerangka kerja yang kompatibel dan runtime hilang. Tambahkan aset yang sesuai untuk runtime yang sesuai ke paket.
PKV003 Aset independen run-time untuk kerangka kerja yang kompatibel hilang. Tambahkan kerangka kerja target independen run-time yang sesuai ke proyek.
PKV004 Aset run-time yang kompatibel untuk aset waktu kompilasi hilang. Tambahkan aset run-time yang sesuai ke paket.
PKV005 Aset run-time yang kompatibel untuk aset waktu kompilasi dan pengidentifikasi runtime yang didukung hilang. Tambahkan aset run-time yang sesuai ke paket.
PKV006 Kerangka kerja target dihilangkan dalam versi terbaru. Tambahkan kerangka kerja target yang sesuai ke proyek.
PKV007 Kerangka kerja target dan pasangan pengidentifikasi runtime dihilangkan dalam versi terbaru. Tambahkan kerangka kerja target yang sesuai dan RID ke proyek.
CP0001 Jenis, enum, rekaman, atau struct yang terlihat di luar assembly hilang di assembly yang dibandingkan saat diperlukan untuk hadir. Tambahkan jenis yang hilang ke assembly tempatnya hilang.
CP0002 Anggota yang terlihat di luar assembly hilang di assembly yang dibandingkan saat diperlukan untuk hadir. Tambahkan anggota yang hilang ke assembly tempat anggota hilang.
CP0003 Beberapa bagian dari identitas assembly (nama, token kunci publik, budaya, atribut yang dapat ditargetkan ulang, atau versi) tidak cocok di kedua sisi perbandingan. Perbarui identitas assembly sehingga kedua belah pihak cocok.
CP0004 Assembly yang cocok tidak ditemukan di satu sisi perbandingan saat membuat pemetaan assembly. Pastikan assembly yang hilang ditambahkan ke paket.
CP0005 Anggota abstract ditambahkan ke sisi kanan perbandingan dengan jenis yang tidak disegel. Hapus anggota atau jangan anotasi sebagai abstract.
CP0006 Anggota ditambahkan ke antarmuka tanpa implementasi default. Jika kerangka kerja target dan versi bahasa mendukung implementasi default, tambahkan satu, atau cukup hapus anggota dari antarmuka.
CP0007 Jenis dasar pada hierarki kelas dihapus dari salah satu sisi yang dibandingkan. Tambahkan kembali jenis dasar. (Jenis dasar baru dapat diperkenalkan dalam hierarki jika itu dimaksudkan.)
CP0008 Antarmuka dasar dihapus dari hierarki antarmuka dari salah satu sisi yang dibandingkan. Tambahkan kembali antarmuka ke hierarki.
CP0009 Jenis yang tidak disegel di satu sisi diannotasi seperti sealed di sisi lain yang dibandingkan. sealed Hapus anotasi dari jenis .
CP0010 Jenis enum yang mendasar berubah dari satu sisi ke sisi lainnya. Ubah kembali jenis yang mendasar ke yang sebelumnya.
CP0011 Nilai anggota dalam enum berubah dari satu sisi ke sisi lainnya. Ubah nilai anggota kembali ke apa yang sebelumnya.
CP0012 Kata virtual kunci dihapus dari anggota yang sebelumnya virtual. virtual Tambahkan kata kunci kembali ke anggota.
CP0013 Kata virtual kunci ditambahkan ke anggota yang sebelumnya tidak virtual. virtual Hapus kata kunci dari anggota.
CP0014 Atribut dihapus dari anggota yang sebelumnya memilikinya. Tambahkan atribut kembali ke anggota.
CP0015 Argumen yang diteruskan ke atribut yang diubah dari satu sisi ke sisi lainnya. Ubah argumen ke atribut kembali ke apa yang sebelumnya.
CP0016 Atribut ditambahkan ke anggota yang sebelumnya tidak memilikinya. Hapus atribut dari anggota.
CP0017 Nama parameter metode berubah dari satu sisi ke sisi lainnya. Ubah nama parameter kembali ke yang sebelumnya.
CP0018 Kata sealed kunci ditambahkan ke anggota antarmuka yang sebelumnya tidak disegel. sealed Hapus kata kunci dari anggota antarmuka.
CP0019 Visibilitas anggota dikurangi dari satu sisi ke sisi lainnya. Ubah visibilitas anggota kembali ke apa yang sebelumnya.
CP0020 Visibilitas anggota diperluas dari satu sisi ke sisi lainnya. Ubah visibilitas anggota kembali ke apa yang sebelumnya.
CP1001 Assembly yang cocok tidak dapat ditemukan di direktori pencarian. (Tidak berlaku untuk validasi paket, hanya saat menggunakan API Compat secara langsung.) Berikan direktori pencarian saat memuat rakitan yang cocok menggunakan AssemblySymbolLoader.
CP1002 Assembly referensi tidak ditemukan saat memuat assembly untuk dibandingkan dalam direktori yang diselesaikan untuk kerangka kerja target saat ini. Sertakan jalur direktori tempat assembly tersebut dapat ditemukan menggunakan item MSBuild berikut: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Tidak ada direktori pencarian yang disediakan untuk moniker kerangka kerja target tempat validasi paket menjalankan API Compat. Berikan direktori pencarian untuk menemukan referensi untuk kerangka kerja target tersebut menggunakan item MSBuild berikut: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Cara menekan

Anda dapat menekan ID diagnostik individual dengan salah satu cara berikut:

File supresi

Untuk menyembunyikan kesalahan kompatibilitas untuk perubahan yang disengaja, tambahkan file CompatibilitySuppressions.xml ke proyek Anda. Validasi paket dan validasi rakitan menggunakan format file supresi yang sama.

Anda dapat membuat file ini secara otomatis dengan salah satu dari dua cara:

  • Dengan meneruskan /p:GenerateCompatibilitySuppressionFile=true jika Anda mengemas proyek dari baris perintah.
  • Dengan menambahkan properti berikut ke file proyek Anda: <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

File supresi terlihat seperti ini.

<?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>
  • DiagnosticIdmenentukan ID kesalahan yang akan ditekan.
  • Target menentukan di mana dalam kode untuk menekan ID diagnostik.
  • Left menentukan operan kiri perbandingan APICompat.
  • Right menentukan operan yang tepat dari perbandingan APICompat.
  • IsBaselineSuppression menentukan apakah akan menerapkan supresi ke validasi garis besar (true) atau tidak (false).

Opsi pengkompilasi NoWarn

Anda juga dapat menekan ID diagnostik individual melalui NoWarn bendera pengompilasi, baik per paket atau secara global.

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