.NET Framework'ten .NET'e bağlantı noktası koduna bağımlılıklarınızı analiz etme

Projenizde desteklenmeyen üçüncü taraf bağımlılıklarını belirlemek için önce bağımlılıklarınızı anlamanız gerekir. Dış bağımlılıklar, projenizde başvurduğunuz ancak kendiniz derlemediğiniz NuGet paketleri veya .dll dosyalarıdır.

Kodunuzu .NET Standard 2.0 veya altına taşımanız hem .NET Framework hem de .NET ile kullanılabilmesini sağlar. Ancak kitaplığı .NET Framework ile kullanmanız gerekmiyorsa en son .NET sürümünü hedeflemeyi göz önünde bulundurun.

NuGet paketlerinizi PackageReference

.NET, NuGet başvuruları için packages.config dosyasını kullanamaz. Paket bağımlılıklarını belirtmek için hem .NET hem de .NET Framework PackageReference kullanabilir. Projenizde paketlerinizi belirtmek için packages.config kullanıyorsanız, bunu biçime dönüştürünPackageReference.

Geçişi öğrenmek için packages.config'den PackageReference'a geçiş makalesine bakın.

NuGet paketlerinizi yükseltme

Projenizi biçime PackageReference geçirdikten sonra paketlerinizin .NET ile uyumlu olup olmadığını doğrulayın.

İlk olarak paketlerinizi en son sürüme yükseltin. Bu, Visual Studio'daki NuGet Paket Yöneticisi kullanıcı arabirimiyle yapılabilir. Paket bağımlılıklarınızın daha yeni sürümleri .NET Core ile uyumlu olabilir.

Paket bağımlılıklarınızı analiz etme

Dönüştürülen ve yükseltilen paket bağımlılıklarınızın .NET Core üzerinde çalıştığını henüz doğrulamadıysanız, bunu başarmanın iki yolu vardır:

nuget.org kullanma

Her paketin desteklediği Hedef Çerçeve Takma Adlarını (TFM'ler) paket sayfasının Bağımlılıklar bölümünde nuget.orggörebilirsiniz.

Siteyi kullanmak uyumluluğu doğrulamak için daha kolay bir yöntem olsa da, bağımlılık bilgileri tüm paketler için sitede kullanılamaz.

NuGet Paket Gezgini'ni kullanma

NuGet paketi, platforma özgü derlemeler içeren bir klasör kümesidir. Paketin içinde uyumlu bir derleme içeren bir klasör olup olmadığını denetleyin.

NuGet paket klasörlerini incelemenin en kolay yolu NuGet Paket Gezgini aracını kullanmaktır. Yükledikten sonra, klasör adlarını görmek için aşağıdaki adımları kullanın:

  1. NuGet Paket Gezgini'ni açın.
  2. Paketi çevrimiçi akıştan aç'a tıklayın.
  3. Paketin adını arayın.
  4. Arama sonuçlarından paket adını seçin ve aç'a tıklayın.
  5. Sağ taraftaki lib klasörünü genişletin ve klasör adlarına bakın.

Aşağıdaki desenlerden birini kullanarak adlara sahip bir klasör arayın: netstandardX.Y, netX.Yveya netcoreappX.Y.

Bu değerler, .NET Standard, .NET ve .NET Core sürümleriyle eşlenen ve tümü .NET ile uyumlu olan Hedef Çerçeve Takma Adlarıdır (TFM).

Önemli

Bir paketin desteklediği TFM'lere bakarken, TFM'nin netstandard* .NET 5, .NET Core veya .NET Framework gibi belirli bir .NET uygulamasını hedeflediğini unutmayın. .NET 5'den başlayarak, net* TFM (işletim sistemi ataması olmadan) taşınabilir hedef olarak etkin bir şekilde yerini alırnetstandard*. Örneğin, net5.0 .NET 5 API yüzeyini hedefler ve platformlar arası dostudur, ancak net5.0-windows Windows işletim sisteminde uygulandığı gibi .NET 5 API yüzeyini hedefler.

.NET Framework uyumluluk modu

NuGet paketlerini analiz ettikten sonra yalnızca .NET Framework'ün hedeflendiğini fark edebilirsiniz.

.NET Standard 2.0'dan itibaren .NET Framework uyumluluk modu kullanıma sunulmuştur. Bu uyumluluk modu.NET Standard ve .NET Core projelerinin .NET Framework kitaplıklarına başvurmasına olanak tanır. Kitaplığın Windows Presentation Foundation (WPF) API'lerini kullanması gibi tüm projelerde .NET Framework kitaplıklarına başvurmak işe yaramaz, ancak birçok taşıma senaryosunun engelini kaldırır.

projenizde .NET Framework'i hedefleyen NuGet paketlerine başvurduğunuz zaman, Huitian.PowerCollectionsaşağıdaki örneğe benzer bir paket geri dönüş uyarısı (NU1701) alırsınız:

NU1701: Package ‘Huitian.PowerCollections 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.

Paketi eklediğinizde ve her derlemenizde bu paketi projenizle test ettiğinizden emin olmak için bu uyarı görüntülenir. Projeniz beklendiği gibi çalışıyorsa, Visual Studio'daki paket özelliklerini düzenleyerek veya proje dosyasını sık kullandığınız kod düzenleyicisinde el ile düzenleyerek bu uyarıyı gizleyebilirsiniz.

Proje dosyasını düzenleyerek uyarıyı engellemek için uyarısını PackageReference engellemek istediğiniz paketin girdisini bulun ve özniteliğini NoWarn ekleyin. NoWarn özniteliği, tüm uyarı kimliklerinin virgülle ayrılmış listesini kabul eder. Aşağıdaki örnekte, proje dosyanızı el ile düzenleyerek paket için uyarının nasıl gizlendiği NU1701Huitian.PowerCollections gösterilmektedir:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

Visual Studio'da derleyici uyarılarını gizleme hakkında daha fazla bilgi için bkz . NuGet paketleri için uyarıları gizleme.

NuGet paketleri .NET üzerinde çalışmazsa

Bağımlı olduğunuz bir NuGet paketi .NET Core'da çalışmıyorsa yapabileceğiniz birkaç şey vardır:

  • Proje açık kaynak ve GitHub gibi bir yerde barındırılıyorsa geliştiricilerle doğrudan etkileşim kurabilirsiniz.
  • Yazarla doğrudan nuget.org üzerinden iletişime geçebilirsiniz. Paketi arayın ve paketin sayfasının sol tarafındaki Sahiplere Başvurun'a tıklayın.
  • Kullandığınız paketle aynı görevi yerine getiren .NET Core üzerinde çalışan başka bir paket arayabilirsiniz.
  • Paketin yaptığı kodu kendiniz yazmaya çalışabilirsiniz.
  • En azından paketin uyumlu bir sürümü kullanıma sunulana kadar uygulamanızın işlevselliğini değiştirerek paket bağımlılığını ortadan kaldırabilirsiniz.

Açık kaynak proje bakımcıları ve NuGet paketi yayımcılarının genellikle gönüllü olduğunu unutmayın. Belirli bir etki alanını önemsedikleri, ücretsiz yaptıkları ve genellikle farklı bir gündüz işlerine sahip oldukları için katkıda bulunurlar. .NET Core desteği istemek için onlarla iletişim kurarken buna dikkat edin.

Bu seçeneklerden herhangi biriyle ilgili sorununuzu çözemiyorsanız daha sonraki bir tarihte .NET Core'a taşımanız gerekebilir.

.NET Ekibi, .NET Core ile hangi kitaplıkların desteklendiği konusunda en önemli olanın hangisi olduğunu bilmek istiyor. Kullanmak istediğiniz kitaplıklar hakkında e-posta dotnet@microsoft.com gönderebilirsiniz.

NuGet olmayan bağımlılıkları analiz etme

Dosya sistemindeki DLL gibi NuGet paketi olmayan bir bağımlılığınız olabilir. .NET Yükseltme Yardımcısı'nın ikili çözümleme işlevini kullanarak bu bağımlılığın taşınabilirliğini belirleyebilirsiniz.

Sonraki adımlar