.NET Taşınabilirlik Çözümleyicisi

Not

API Bağlantı Noktası, .NET Yükseltme Yardımcısı tarafından ikili analiz için kullanım dışı bırakıldı. API Bağlantı Noktası'nın arka uç hizmeti kapatıldı, bu nedenle aracı kullanmak için çevrimdışı kullanmanız gerekir. Daha fazla bilgi için bkz . .NET API Bağlantı Noktası BENIOKU.

Kitaplıklarınızın çok platformlu desteği olmasını mı istiyorsunuz? .NET Framework uygulamanızın .NET Core'da çalıştırılması için ne kadar çalışma gerektiğini görmek ister misiniz? .NET Taşınabilirlik Çözümleyicisi, derlemeleri analiz eden ve uygulamalar veya kitaplıkların belirtilen hedeflenen .NET platformlarınızda taşınabilir olması için eksik olan .NET API'leri hakkında ayrıntılı bir rapor sağlayan bir araçtır. Taşınabilirlik Çözümleyicisi, proje başına bir derlemeyi analiz eden bir Visual Studio Uzantısı ve derlemeleri belirtilen dosyalara veya dizine göre analiz eden bir ApiPort konsol uygulaması olarak sunulur.

Projenizi .NET Core gibi yeni platformu hedeflemek üzere dönüştürdükten sonra, özel durumlar ve diğer uyumluluk sorunları oluşturan PlatformNotSupportedException API'leri tanımlamak için Roslyn tabanlı Platform uyumluluk çözümleyicisini kullanabilirsiniz.

Ortak hedefler

  • .NET Core: Modüler bir tasarıma sahiptir, yan yana yüklemeyi destekler ve platformlar arası senaryoları hedefler. Yan yana yükleme, diğer uygulamaları bozmadan yeni .NET Core sürümlerini benimsemenizi sağlar. Amacınız uygulamanızı .NET Core'a taşımayı ve birden çok platformu desteklemekse, önerilen hedef budur.
  • .NET Standard: Tüm .NET uygulamalarında kullanılabilen .NET Standart API'lerini içerir. Amacınız kitaplığınızın desteklenen tüm .NET platformlarında çalıştırılmasını sağlamaksa, bu önerilen hedeftir.
  • ASP.NET Core: .NET Core üzerinde oluşturulmuş modern bir web çerçevesi. Amacınız web uygulamanızı birden çok platformu desteklemek için .NET Core'a taşımayı amaçlıyorsanız, önerilen hedef budur.
  • .NET Core + Platform Uzantıları: .NET Framework kullanılabilir teknolojilerinin birçoğunu sağlayan Windows Uyumluluk Paketi'ne ek olarak .NET Core API'lerini de içerir. Bu, uygulamanızı .NET Framework'ten Windows üzerinde .NET Core'a taşımanız için önerilen bir hedeftir.
  • .NET Standard + Platform Uzantıları: .NET Framework kullanılabilir teknolojilerinin birçoğunu sağlayan Windows Uyumluluk Paketi'ne ek olarak .NET Standart API'lerini de içerir. Bu, kitaplığınızı .NET Framework'ten Windows üzerinde .NET Core'a taşımanız için önerilen bir hedeftir.

.NET Taşınabilirlik Çözümleyicisi'ni kullanma

Visual Studio'da .NET Taşınabilirlik Çözümleyicisi'ni kullanmaya başlamak için önce uzantıyı Visual Studio Market'ten indirip yüklemeniz gerekir. Visual Studio 2017 ve Visual Studio 2019 sürümlerinde çalışır.

Önemli

.NET Taşınabilirlik Çözümleyicisi Visual Studio 2022'de desteklenmez.

Visual Studio'da >Taşınabilirlik Çözümleyicisi Ayarlar çözümleyin ve geçerli derlemenizin oluşturulduğu platform/sürümle karşılaştırıldığında taşınabilirlik boşluklarını değerlendirmek istediğiniz .NET platformları/sürümleri olan Hedef Platformlarınızı seçin.

Screenshot of portability analyzer.

ApiPort konsol uygulamasını da kullanabilir, ApiPort deposundan indirebilirsiniz. Kullanılabilir hedef listeyi görüntülemek için komut seçeneğini kullanabilirlistTargets, ardından veya --target komut seçeneğini belirterek hedef platformları -t seçebilirsiniz.

Çözüm genelinde görünüm

Birçok proje içeren bir çözümü analiz etmede yararlı bir adım, hangi derleme alt kümesinin neye bağlı olduğunu anlamak için bağımlılıkları görselleştirmektir. Genel öneri, bir bağımlılık grafiğindeki yaprak düğümlerden başlayarak aşağıdan yukarıya doğru bir yaklaşımda analizin sonuçlarının uygulanmasıdır.

Bunu almak için aşağıdaki komutu çalıştırabilirsiniz:

ApiPort.exe analyze -r DGML -f [directory or file]

Bunun bir sonucu Visual Studio'da açıldığında aşağıdaki gibi görünür:

Screenshot of DGML analysis.

Taşınabilirliği analiz etme

Visual Studio'da projenizin tamamını analiz etmek için Çözüm Gezgini'da projenize sağ tıklayın ve Derleme Taşınabilirliğini Çözümle'yi seçin. Aksi takdirde Çözümle menüsüne gidin ve Derleme Taşınabilirliğini Analiz Et'i seçin. Buradan projenizin yürütülebilir dosyasını veya DLL dosyasını seçin.

Screenshot of Portability Analyzer from Solution Explorer.

ApiPort konsol uygulamasını da kullanabilirsiniz.

Geçerli dizini analiz etmek için aşağıdaki komutu yazın:

ApiPort.exe analyze -f .

Belirli bir .dll dosya listesini analiz etmek için aşağıdaki komutu yazın:

ApiPort.exe analyze -f first.dll -f second.dll -f third.dll

Belirli bir sürümü hedeflemek için parametresini -t kullanın:

ApiPort.exe analyze -t ".NET, Version=5.0" -f .

Daha fazla yardım almak için komutunu çalıştırın ApiPort.exe -? .

Sahip olduğunuz ve bağlantı noktası olarak kullanmak istediğiniz tüm ilgili exe ve dll dosyalarını eklemeniz ve uygulamanızın bağımlı olduğu ancak sizin sahip olmadığınız ve bağlantı noktası alamadığınız dosyaları hariç tutmanız önerilir. Bu size en uygun taşınabilirlik raporunu verir.

Taşınabilirlik sonucunu görüntüleme ve yorumlama

Raporda yalnızca Hedef Platform tarafından desteklenmeyen API'ler görüntülenir. Analizi Visual Studio'da çalıştırdıktan sonra .NET Taşınabilirlik rapor dosyanızın açılır olduğunu görürsünüz. ApiPort konsol uygulamasını kullandıysanız, .NET Taşınabilirlik raporunuz belirttiğiniz biçimde bir dosya olarak kaydedilir. Varsayılan değer, geçerli dizininizdeki bir Excel dosyasındadır (.xlsx).

Taşınabilirlik Özeti

Screenshot of the Portability Summary.

Raporun Taşınabilirlik Özeti bölümü, çalıştırmaya dahil edilen her derleme için taşınabilirlik yüzdesini gösterir. Önceki örnekte, uygulamada kullanılan .NET Framework API'lerinin %71,24'ünün svcutil .NET Core + Platform Uzantıları'nda kullanılabilir. .NET Taşınabilirlik Çözümleyicisi aracını birden çok derlemede çalıştırırsanız, her derlemenin Taşınabilirlik Özeti raporunda bir satırı olmalıdır.

Ayrıntılar

Screenshot of the Portability Details.

Raporun Ayrıntılar bölümünde, seçilen Hedeflenen Platformlardan herhangi birinde eksik OLAN API'ler listelenir.

  • Hedef tür: Hedef Platformda eksik API var
  • Hedef üye: Hedef Platformda yöntemi eksik
  • Derleme adı: Eksik API'nin içinde yaşadığı .NET Framework derlemesi.
  • Seçilen Hedef Platformların her biri ".NET Core" gibi bir sütundur: "Desteklenmiyor" değeri, API'nin bu Hedef Platformda desteklenmediği anlamına gelir.
  • Önerilen Değişiklikler: değiştirilmesi önerilen API veya teknoloji. Şu anda bu alan birçok API için boş veya güncel değil. Çok sayıda API nedeniyle, güncel tutmak için önemli bir zorlukla karşı karşıyayız. Müşterilere yararlı bilgiler sağlamak için alternatif çözümler arıyoruz.

Eksik Derlemeler

Screenshot of missing assemblies.

Raporunuzda Eksik Derlemeler bölümü bulabilirsiniz. Bu bölüm, çözümlenen derlemeleriniz tarafından başvuruda bulunan ve çözümlenmemiş derlemelerin listesini içerir. Sahip olduğunuz bir derlemeyse, ayrıntılı, API düzeyinde taşınabilirlik raporu alabilmeniz için api taşınabilirlik çözümleyicisi çalıştırması bölümüne ekleyin. Bu bir üçüncü taraf kitaplığıysa, hedef platformunuzu destekleyen daha yeni bir sürüm olup olmadığını denetleyin ve daha yeni bir sürüme geçmeyi göz önünde bulundurun. Sonunda liste, uygulamanızın bağlı olduğu ve hedef platformunuzu destekleyen bir sürüme sahip olan tüm üçüncü taraf derlemelerini içermelidir.

.NET Taşınabilirlik Çözümleyicisi hakkında daha fazla bilgi için GitHub belgelerini ziyaret edin.