.NET taşınabilirlik Çözümleyicisi

Kitaplıklarınızın çok platformlu desteklemesini sağlamak istiyor musunuz? .NET Framework uygulamanızın .net Core üzerinde çalışmasını sağlamak için ne kadar iş gerektiğini görmek mi istiyorsunuz? .Net taşınabilirlik Çözümleyicisi , derlemeleri çözümleyen ve belirtilen hedeflenen .net platformlarınızda taşınabilir uygulamalar veya kitaplıklar için eksik olan .NET API 'lerinde ayrıntılı bir rapor sağlayan bir araçtır. taşınabilirlik çözümleyicisi, her proje için bir derlemeyi analiz eden bir Visual Studio uzantısıve belirtilen dosya veya dizin tarafından derlemeleri analiz eden bir apiport konsol uygulamasıolarak sunulur.

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

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ın .NET Core 'a bağlantı noktası olması ve birden çok platformu desteklemesi gerekiyorsa, bu önerilen hedeftir.
  • . NET Standard: tüm .NET uygulamalarında bulunan .NET Standard API 'leri içerir. Amacınız, kitaplığınızı .NET tarafından desteklenen tüm platformlarda çalıştırmak ise, bu önerilen hedeftir.
  • ASP.NET Core: .net Core üzerinde oluşturulmuş modern bir web çerçevesi. Amacınız, Web uygulamanızın birden çok platformu desteklemek üzere .NET Core 'a bağlantı noktası olması durumunda önerilen hedeftir.
  • .net core + Platform uzantıları: .NET Framework kullanılabilir teknolojilerin çoğunu sağlayan Windows uyumluluk paketine ek olarak .net core apı 'lerini de içerir. bu, uygulamanızın Windows .NET Framework .net Core 'a taşıma için önerilen bir hedeftir.
  • .NET Standard + Platform uzantıları: .NET Framework kullanılabilir teknolojilerin çoğunu sağlayan Windows uyumluluk paketine ek olarak .NET Standard apı 'leri içerir. bu, kitaplığınızın .NET Framework Windows ' deki .net Core 'a taşıma için önerilen bir hedeftir.

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

Visual Studio ' de .net taşınabilirlik çözümleyicisi 'ni kullanmaya başlamak için önce uzantıyı Visual Studio market'ten indirmeniz ve yüklemeniz gerekir. Visual Studio 2017 ve sonraki sürümlerde çalışmaktadır. bunu Visual Studio ' de, > taşınabilirlik çözümleyicisi Ayarlar analiz ederek yapılandırın ve geçerli derlemelerinizin oluşturulduğu platform/sürümle kıyaslanması gereken taşınabilirlik boşluklarını değerlendirmek istediğiniz .net platformları/sürümleri olan hedef platformlarınızı seçin.

Taşınabilirlik Çözümleyicisi 'nin ekran görüntüsü.

Ayrıca, ApiPort konsol uygulamasını da kullanabilir, apiport deposundanindirebilirsiniz. listTargetsKullanılabilir hedef listesini göstermek için komut seçeneğini kullanabilirsiniz, ardından -t veya komut seçeneğini belirterek hedef platformları seçebilirsiniz --target .

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

Birçok projeyle bir çözümü çözümlemede yararlı bir adım, derlemelerin hangi alt kümesinin ne olduğunu anlamak için bağımlılıkları görselleştirmektir. Genel öneri, bir bağımlılık grafiğindeki yaprak düğümleri ile başlayan bir alt yaklaşımda analizin sonuçlarının uygulanması için kullanılır.

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

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

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

DGML analizinin ekran görüntüsü.

Taşınabilirliği çözümle

tüm projenizi Visual Studio analiz etmek için Çözüm Gezgini içinde projenize sağ tıklayın ve bütünleştirilmiş kod taşınabilirliği çözümle' yi seçin. Aksi takdirde, Çözümle menüsüne gidin ve derleme taşınabilirliği çözümle' yi seçin. Buradan projenizin yürütülebilir dosyasını veya DLL 'sini seçin.

Çözüm Gezgini 'ten taşınabilirlik Çözümleyicisi ekran görüntüsü.

Apiport konsol uygulamasınıda kullanabilirsiniz.

Geçerli dizini çözümlemek için aşağıdaki komutu yazın:

ApiPort.exe analyze -f .

.dll dosyalarının belirli bir 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 kullanın -t :

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

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

Sahip olduğunuz ve bağlantı noktası yapmak istediğiniz tüm ilgili exe ve DLL dosyalarını dahil etmeniz ve uygulamanızın bağlı olduğu dosyaları dışlayamazsınız, ancak bağlantı noktası kullanamazsınız. Bu, size en uygun taşınabilirlik raporu sağlar.

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

Raporda yalnızca bir hedef platform tarafından desteklenmeyen API 'Ler görüntülenir. analizi Visual Studio ' de çalıştırdıktan sonra, .net taşınabilirlik raporu dosya bağlantısı açılan bilgilerinizi 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 dizininizde bir Excel dosyası (.xlsx).

Taşınabilirlik Özeti

Taşınabilirlik özetinin ekran görüntüsü.

Raporun taşınabilirlik Özeti bölümünde, çalıştırmada bulunan her derleme için taşınabilirlik yüzdesi gösterilmektedir. önceki örnekte, uygulamada kullanılan .NET Framework apı 'lerinin% 71,24 ' u svcutil .net Core + Platform uzantılarında sunulmaktadır. .NET taşınabilirlik Çözümleyicisi aracını birden çok derlemeye karşı çalıştırırsanız, her derlemenin taşınabilirlik Özeti raporunda bir satırı olması gerekir.

Ayrıntılar

Taşınabilirlik ayrıntılarının ekran görüntüsü.

Raporun Ayrıntılar bölümünde, seçilen hedeflenen platformların hiçbirinde eksik olan API 'ler listelenir.

  • Hedef türü: tür, hedef platformdan eksik API 'ye sahip
  • Hedef üye: Yöntem bir hedef platformda yok
  • bütünleştirilmiş kod adı: eksik apı 'nin üzerinde bulunduğu .NET Framework derlemesi.
  • Seçilen hedef platformların her biri, ".NET Core": "desteklenmeyen" değeri gibi bir sütundur ve bu hedef platformda API 'nin desteklenmediği anlamına gelir.
  • Önerilen değişiklikler: olarak değiştirilecek önerilen API veya teknoloji. Şu anda, birçok API için bu alan boş veya güncel değil. Çok sayıda API nedeniyle, güncel tutmanın önemli bir zorluğu vardır. Müşterilere yararlı bilgiler sağlamak için alternatif çözümlere bakıyoruz.

Eksik derlemeler

Eksik derlemelerin ekran görüntüsü.

Raporunuzda eksik derlemeler bölümünü bulabilirsiniz. Bu bölüm, çözümlenmiş derlemeleriniz tarafından başvurulan ve çözümlenmemiş derlemelerin bir listesini içerir. Sahip olduğunuz bir derlemedir, bunun için ayrıntılı, API düzeyi taşınabilirlik raporu alabilmeniz için API taşınabilirlik Çözümleyicisi ' ni çalıştırın. Üçüncü taraf bir kitaplıksa, hedef platformunuzu destekleyen daha yeni bir sürüm olup olmadığını denetleyin ve daha yeni sürüme geçmeyi düşünün. Sonuç olarak, listenin, hedef platformunuzu destekleyen bir sürümü olan, uygulamanızın bağımlı olduğu tüm üçüncü taraf derlemelerini içermesi gerekir.

.net taşınabilirlik çözümleyicisi hakkında daha fazla bilgi için, GitHub belgelerini ziyaret edin ve .net taşınabilirlik çözümleyicisi kanal 9 videosu ' ne bakın.