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:
- Melalui file supresi.
NoWarn
Melalui bendera kompilator.
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>
DiagnosticId
menentukan 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>