Paket doğrulamasına genel bakış
Platformlar arası uyumluluk, .NET kitaplığı yazarları için temel bir gereksinim haline geldi. Ancak, bu paketler için doğrulama araçları olmadan, genellikle iyi çalışmaz. Bu özellikle, benimseme 'nin kitaplık yazarları tarafından özel dikkat çekici olması için yeterince yüksek olmadığı yeni bir platformda soruna neden olur.
Paket doğrulaması sunuluncaya kadar, .NET SDK araçları, çok hedefli paketlerin düzgün biçimlendirilmediği neredeyse hiçbir doğrulama sağlamamıştır. Örneğin, .NET 6 ve .NET Standard 2,0 için çoklu hedeflere sahip bir paket, .NET Standard 2,0 ikilisinde derlenen kodun .NET 6 ikilisinde çalışmasına olanak sağlaması gerekir.
Değişikliğin güvenli ve uyumlu olduğunu düşünebilirsiniz ve bu değişikliğin kaynak kullanımı hiçbir değişiklik yapılmadan derlenmeye devam eder. Ancak, tüketici yeniden derlenmediyse değişiklikler çalışma zamanında soruna neden olabilir. Örneğin, bir yönteme isteğe bağlı bir parametre eklemek veya bir sabitin değerini değiştirmek bu tür uyumluluk sorunlarına neden olabilir.
Paket doğrulama araçları, kitaplık geliştiricilerinin paketlerinin tutarlı ve düzgün biçimlendirilmiş olduğunu doğrulamasına izin verir. Aşağıdaki denetimleri sağlar:
- Sürümler arasında hiçbir Son değişiklik olmadığını doğrular.
- Paketin, çalışma zamanına özgü farklı uygulamalar için aynı Publics API 'Leri kümesine sahip olduğunu doğrular.
- Geliştiricilerin tüm uygulanabilirlik boşluklarını yakalamasına yardımcı olur.
Paket doğrulamasını etkinleştir
EnablePackageValidation Özelliğini olarak ayarlayarak, .net projenizde paket doğrulamasını etkinleştirirsiniz true .
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
</Project>
EnablePackageValidation görevden sonra bir dizi denetim çalıştırır pack . diğer MSBuild özellikleri ayarlanarak çalıştırılabilen bazı ek denetimler vardır.
Doğrulayıcı türleri
Görevin bir parçası olarak paketinizi doğrulayan üç farklı doğrulayıcılar vardır pack :
- Temel sürüm doğrulayıcısı , kitaplık projenizi paketinizin daha önce yayınlanan, kararlı bir sürümüne karşı doğrular.
- Uyumlu çalışma zamanı doğrulayıcısı , çalışma zamanına özgü uygulama derlemelerinizin birbirleriyle ve derleme zamanı derlemeleriyle uyumlu olduğunu doğrular.
- Uyumlu çerçeve doğrulayıcısı , bir çerçeveye göre derlenen kodun, çok hedefleme paketindeki tüm diğer kullanıcılara karşı çalışmasını doğrular.
Uyumluluk hatalarını gösterme
Kasıtlı değişiklikler için uyumluluk hatalarını gizlemek için, projenize bir CompatibilitySuppressions.xml dosyası ekleyin.
/p:GenerateCompatibilitySuppressionFile=trueProjeyi komut satırından oluşturuyorsanız veya projenize aşağıdaki özelliği ekleyerek geçirerek bu dosyayı otomatik olarak oluşturabilirsiniz:<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
Gizleme dosyası şuna benzer.
<?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>
<isBaseline>false</isBaseline>
</Suppression>
</Suppressions>
DiagnosticIDbastırdığınızda hata kimliğini belirtir.Targetkodun, tanılama kimliklerini gösterme nerede olduğunu belirtirLeftbir Apıat karşılaştırmasının sol işlenenini belirtir.Rightbir Apıat karşılaştırmasının sağ işlenenini belirtir.isBaseline:truebir temel doğrulamaya gizleme uygulamak için olarak ayarlayın; Aksi takdirde, olarak ayarlayınfalse.