Paylaşılan çerçeveye dahil edilen bazı Microsoft.Extensions paketleri

Uygulama boyutunu küçültmek, paket bağımlılıklarını basitleştirmek ve bakımı kolaylaştırmak için .NET 11, temel paylaşılan çerçevede dokuz Microsoft.Extensions.* kitaplığı içerir. Bu paketlere açıkça başvuran projeler , NU1510 derleme uyarısı alır. PackageReference öğesini kaldırarak uyarıyı giderebilirsiniz. Bu paketlerin eski bir sürümüne bağımlıysanız, .NET 11 sürümüne yükseltmek, eski sürümlerle .NET 11 arasında ortaya çıkan hataya neden olan değişiklikleri ortaya çıkarabilir.

Sürüm kullanıma sunulmuştur

.NET 11 Önizleme 4

Önceki davranış

Daha önce, aşağıdaki Microsoft.Extensions.* kitaplıkları .NET paylaşılan çerçevenin parçası değildi. (Paylaşılan çerçeveyi Sdk="Microsoft.NET.Sdk" kullanarak veya benzer şekilde diğer .NET SDK başvurarak alırsınız.) Bunlara ihtiyaç duyulan projeler açık PackageReference girdileri gerektiriyor ve derleme işlemi derlemeleri çıkış klasörüne kopyaladı:

Yeni davranış

.NET 11’den itibaren, bu dokuz kitaplık .NET’in temel paylaşılan çerçevesinin bir parçasıdır:

  • net11.0 veya sonraki bir sürümü hedeflediğinizde bu kitaplıklar için PackageReference gerekmez.
  • Bu paketlere açıkça başvurursanız, NU1510 derleme uyarısı alırsınız.
  • Bu derlemeler artık çıkış klasörüne kopyalanmaz.
  • Nadir durumlarda, varsayılan yük kümesindeki ek API'ler ad veya tür çakışmasına neden olabilir. Çakışmayı çözmek için daha belirgin using yönergeleri ekleyin, bir takma ad kullanın veya tam nitelikli bir tür adı kullanın.

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Bu yaygın olarak kullanılan kitaplıkların paylaşılan çerçeveye dahil olması, uygulama boyutunu küçültür, paket bağımlılıklarını basitleştirir ve bakımı kolaylaştırır.

Etkilenen herhangi bir paket için PackageReference öğesini kaldırın:

Yalnızca net11.0 veya sonrasını hedefleyen projeler için, PackageReference öğesini tamamen kaldırın:

<!-- Remove entries like these from your .csproj when targeting net11.0 only: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." />
<PackageReference Include="Microsoft.Extensions.Options" Version="..." />

Kodunuz değişiklik yapmadan çalışmaya devam eder; API'ler artık çalışma zamanının bir parçasıdır.

Çok hedefli projelerde (örneğin, <TargetFrameworks>net10.0;net11.0</TargetFrameworks>), paket eski TFM için hala gerekli olduğundan NU1510 tetiklenmez. Eylem gerekmez; NuGet her hedef çerçeve için uygun derlemeyi otomatik olarak seçer. Açıkça belirtmek isterseniz, referansı koşullu olarak ekleyebilirsiniz:

<!-- Keep the reference only for TFMs that don't include it in the shared framework: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." Condition="'$(TargetFramework)' != 'net11.0'" />

Derleme zamanı adı çakışmalarını çözme (nadir):

Kodunuzdaki bir ad yeni eklenen API'lerden biriyle çakıldığından bir derleme hatasıyla karşılaşırsanız şu yaklaşımlardan birini kullanın:

  • Daha özel using bir yönerge ekleyin.
  • Bir using takma ad kullanın.
  • Tam nitelikli tür adı kullanın.

Bu paketlerin eski bir sürümüne bağımlıysanız:

MissingMethodException veya TypeLoadException gibi çalışma zamanı başarısızlıklarını önlemek için, bağımlı tüm kitaplıkları veya ikili dosyaları .NET 11 referans derlemelerine karşı yeniden derleyin. net11.0 hedefliyorsanız, PackageReference öğesini kaldırın ve yeniden derleyin. Daha eski TFM'leri hedefliyorsanız veya çoklu hedefleme yapıyorsanız, net11.0 dışındaki hedeflere yönelik paket başvurularını geçerli sürüme güncelleyin ve ardından yeniden derleyin.

Bu paketlerin .NET 11 sürümlerine yükseltme yaparken, önceki sürümlerden kaynaklanan aşağıdaki uyumluluğu bozan değişiklikler ortaya çıkabilir:

Microsoft. Extensions.DependencyInjection.Abstractions

Microsoft.Extensions.Logging.Abstractions

Microsoft.Extensions.Hosting.Abstractions

Etkilenen API'ler

Yok.