Aracılığıyla paylaş


Paket/derleme doğrulama hata kodları

Bu başvuru makalesi, paket doğrulaması ve derleme doğrulaması tarafından oluşturulan tüm hata kodlarını listeler.

Hata kodlarının listesi

Tanılama Kimliği Description Önerilen eylem
PKV001 Uyumlu bir çerçeve için derleme zamanı varlığı eksik. Projeye uygun hedef çerçeveyi ekleyin.
PKV002 Uyumlu çerçeve ve çalışma zamanı için bir çalışma zamanı bileşeni eksik. Pakete ilgili çalışma zamanı için uygun varlığı ekleyin.
PKV003 Uyumlu bir çerçeve için çalışma zamanından bağımsız bir kaynak eksik. Projeye uygun çalışma zamanı bağımsız hedef çerçevesini ekleyin.
PKV004 Derleme zamanı bileşeni için uyumlu bir çalışma zamanı bileşeni eksik. Uygun çalışma zamanı bileşenini pakete ekleyin.
PKV005 Derleme zamanı varlığı ve desteklenen çalışma zamanı tanımlayıcısı için uyumlu bir çalışma zamanı varlığı eksik. Uygun çalışma zamanı bileşenini pakete ekleyin.
PKV006 Hedef çerçeve artık en son sürümde kaldırıldı. Projeye uygun hedef çerçeveyi ekleyin.
PKV007 Hedef çerçeve ve çalışma zamanı tanımlayıcı çifti en son sürümde bırakılır. Projeye uygun hedef çerçeveyi ve RID'yi ekleyin.
CP0001 Derleme dışında erişilebilir olan bir tür, enum, kayıt veya yapı, mevcut olması gerektiğinde karşılaştırılan derlemede eksiktir. Eksik türü eksik olan derlemeye ekleyin.
CP0002 Derlemenin dışında görünen bir üye, mevcut olması gerektiğinde karşılaştırılan derlemede eksiktir. Eksik üyeyi eksik olduğu derlemeye ekleyin.
CP0003 Derleme kimliğinin (ad, ortak anahtar belirteci, kültür, yeniden güncelleştirilebilir öznitelik veya sürüm) bir bölümü karşılaştırmanın her iki tarafında da eşleşmiyor. Her iki tarafın da uyumlu olması için derleme kimliğini güncelleyin.
CP0004 Derleme eşlemesi oluşturulurken karşılaştırmanın bir tarafında eşleşen bir derleme bulunamadı. Eksik derlemenin pakete eklendiğinden emin olun.
CP0005 Mühürsüz bir abstract türle karşılaştırmanın sağ tarafına bir üye eklendi. Üyeyi kaldırın veya abstract olarak açıklama eklemeyin.
CP0006 Varsayılan uygulama olmadan bir arabirime üye eklendi. Hedef çerçeve ve dil sürümü varsayılan uygulamaları destekliyorsa, bir tane ekleyin veya yalnızca üyeyi arabirimden kaldırın.
CP0007 Sınıf hiyerarşisinde bir temel tür, karşılaştırılan taraflardan birinden kaldırıldı. Temel türü geri ekleyin. (Amaçlanan hiyerarşiye yeni bir temel tür eklenebilir.)
CP0008 Karşılaştırılan taraflardan birinin arabirim hiyerarşisinden bir temel arabirim kaldırıldı. Arabirimi hiyerarşiye geri ekleyin.
CP0009 Bir tarafı mühürsüz olan bir türe, diğer tarafta karşılaştırıldığında sealed olarak açıklama eklenmiştir. Ek açıklamayı sealed türünden kaldırın.
CP0010 Temel alınan sıralı veri tipi bir türden başka bir türe değiştirildi. Temel alınan türü daha önce olduğu gibi değiştirin.
CP0011 Bir sabit listesi içindeki üyenin değeri bir taraftan diğerine değiştirildi. Üyenin değerini daha önce olduğu gibi değiştirin.
CP0012 virtual Veya abstract anahtar sözcüğü, daha önce sanal veya soyut olan bir üyeden kaldırılmıştır. Üye daha önce sanalsa anahtar sözcüğünü virtual geri ekleyin. Üye daha önce soyutsa, üyeye virtual veya abstract anahtar sözcüğünü ekleyin.
CP0013 Anahtar virtual sözcük, daha önce sanal olmayan bir üyeye eklendi. Üyeden virtual anahtar sözcüğünü kaldırın.
CP0014 Daha önce sahip olduğu bir üyeden bir öznitelik kaldırıldı. özniteliğini üyeye geri ekleyin.
CP0015 Bir özniteliğe geçirilen bağımsız değişkenler bir taraftan diğerine değiştirildi. Öznitelik için bağımsız değişkenleri önceki halleriyle değiştirin.
CP0016 Daha önce sahip olmayan bir üyeye öznitelik eklendi. özniteliğini üyeden kaldırın.
CP0017 Bir yöntemin parametresinin adı bir taraftan diğerine değiştirildi. Parametrenin adını eski adıyla değiştirin.
CP0018 Anahtar sealed sözcük, daha önce mühürlü olmayan bir arabirim üyesine eklendi. sealed Arabirim üyesinden anahtar sözcüğünü kaldırın.
CP0019 Bir üyenin görünürlüğü bir taraftan diğerine azaltıldı. Üyenin görünürlüğünü daha önce olduğu gibi değiştirin.
CP0020 Bir üyenin görünürlüğü bir taraftan diğerine genişletildi. Üyenin görünürlüğünü daha önce olduğu gibi değiştirin.
CP1001 Eşleşen bir derleme arama dizinlerinde bulunamadı. (Paket doğrulaması için geçerli değildir, yalnızca API Compat doğrudan kullanılırken geçerlidir.) AssemblySymbolLoader kullanarak eşleşen derlemeler yüklenirken arama dizinini sağlayın.
CP1002 Geçerli hedef çerçevenin çözümlenen dizinlerinde karşılaştırmak üzere derlemeler yüklenirken bir başvuru derlemesi bulunamadı. Şu MSBuild öğesini kullanarak bu derlemenin bulunabileceği dizin yolunu ekleyin: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Paket doğrulamasının API Compat çalıştırıldığı hedef çerçeve adı için hiçbir arama dizini sağlanmadı. Aşağıdaki MSBuild öğesini kullanarak bu hedef çerçevenin başvurularını bulmak için arama dizinini belirtin: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Bastırmak Nasıl Yapılır?

Tek tek tanılama kimliklerini aşağıdaki yollardan biriyle gizleyebilirsiniz:

Gizleme dosyası

Kasıtlı değişikliklerde uyumluluk hatalarını engellemek için projenize birCompatibilitySuppressions.xml dosyası ekleyin. Paket doğrulama ve derleme doğrulaması aynı gizleme dosyası biçimini kullanır.

Bu dosyayı iki yoldan biriyle otomatik olarak oluşturabilirsiniz:

  • Komut satırından projeyi paketlerken, /p:GenerateCompatibilitySuppressionFile=true geçirerek bunu yapabilirsiniz.
  • Proje dosyanıza aşağıdaki özelliği ekleyerek: <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

Gizleme dosyası şöyle görünür.

<?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 , gizlenecek hatanın kimliğini belirtir.
  • Target , tanılama kimliklerini engellemek için kodun neresinde olduğunu belirtir.
  • Left APICompat karşılaştırmasının sol işlenicisini belirtir.
  • Right APICompat karşılaştırmasının sağ operandını belirtir.
  • IsBaselineSuppression, gizlemenin bir temel doğrulamaya () uygulanıp uygulanmayacağını (truefalse) belirtir.

NoWarn derleyici seçeneği

Ayrıca, bireysel teşhis kimliklerini derleyici bayrağı aracılığıyla, paket bazında veya genel olarak gizleyebilirsiniz.

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