Bagikan melalui


.NET Portability Analyzer

Catatan

Port API tidak digunakan lagi untuk analisis biner oleh Asisten Peningkatan .NET. Layanan backend Port API telah dimatikan, jadi untuk menggunakan alat ini, Anda harus menggunakannya secara offline. Untuk informasi selengkapnya, lihat .NET API Port README.

Ingin membuat pustaka Anda mendukung multi-platform? Ingin melihat berapa banyak pekerjaan yang diperlukan untuk membuat aplikasi .NET Framework Anda berjalan di .NET Core? .NET Portability Analyzer adalah alat yang menganalisis rakitan dan memberikan laporan terperinci tentang .NET API yang hilang agar aplikasi atau pustaka dapat portabel pada platform .NET target yang Anda tentukan. Penganalisis Portabilitas ditawarkan sebagai Ekstensi Visual Studio, yang menganalisis satu perakitan per proyek, dan sebagai aplikasi konsol ApiPort, yang menganalisis rakitan dengan file atau direktori tertentu.

Setelah mengonversi proyek untuk menargetkan platform baru, seperti .NET Core, Anda dapat menggunakan penganalisis kompatibilitas Platform berbasis Roslyn untuk mengidentifikasi API yang melempar pengecualian PlatformNotSupportedException dan masalah kompatibilitas lainnya.

Target umum

  • .NET Core: Memiliki desain modular, mendukung penginstalan berdampingan, dan menargetkan skenario lintas platform. Penginstalan berdampingan memungkinkan Anda mengadopsi versi .NET Core baru tanpa merusak aplikasi lain. Jika tujuan Anda adalah untuk memindahkan aplikasi Anda ke .NET Core dan mendukung beberapa platform, ini adalah target yang direkomendasikan.
  • .NET Standard: Menyertakan API Standar .NET yang tersedia di semua implementasi .NET. Jika tujuan Anda adalah untuk membuat pustaka Anda berjalan di semua platform yang didukung .NET, ini adalah target yang direkomendasikan.
  • ASP.NET Core: Kerangka kerja web modern yang dibangun di .NET Core. Jika tujuan Anda adalah untuk memindahkan aplikasi Anda ke .NET Core dan mendukung beberapa platform, ini adalah target yang direkomendasikan.
  • Ekstensi Platform .NET Core +: Termasuk .NET Core API selain Paket Kompatibilitas Windows, yang menyediakan banyak teknologi .NET Framework yang tersedia. Ini adalah target yang direkomendasikan untuk memindahkan aplikasi Anda dari .NET Framework ke .NET Core pada Windows.
  • Ekstensi Platform .NET Standard +: Termasuk .NET Standard API selain Paket Kompatibilitas Windows, yang menyediakan banyak teknologi .NET Framework yang tersedia. Ini adalah target yang direkomendasikan untuk memindahkan pustaka Anda dari .NET Framework ke .NET Core pada Windows.

Konfigurasikan .NET Portability Analyzer

Untuk mulai menggunakan .NET Portability Analyzer di Visual Studio, Pertama-tama Anda perlu mengunduh dan menginstal ekstensi dari Visual Studio Marketplace. Ini berfungsi pada versi Visual Studio 2017 dan Visual Studio 2019.

Penting

.NET Portability Analyzer tidak didukung pada Visual Studio 2022.

Konfigurasikan di Visual Studio melalui Analisis>Pengaturan Penganalisis Probabilitas dan pilih Platform Target Anda, yang merupakan platform/versi .NET yang ingin Anda evaluasi kesenjangan portabilitasnya dibandingkan dengan platform/versi yang digunakan perakitan Anda saat ini.

Screenshot of portability analyzer.

Anda juga dapat menggunakan aplikasi konsol ApiPort, mengunduhnya dari repositori ApiPort. Anda dapat menggunakan listTargets opsi perintah untuk menampilkan daftar target yang tersedia, lalu memilih platform target dengan menentukan opsi perintah -t atau --target.

Tampilan lebar solusi

Langkah yang berguna dalam menganalisis solusi dengan banyak proyek adalah memvisualisasikan dependensi untuk memahami subset rakitan mana yang bergantung pada apa. Rekomendasi umumnya adalah menerapkan hasil analisis dalam pendekatan bottom-up yang dimulai dengan node daun dalam grafik dependensi.

Untuk mengambil ini, Anda dapat menjalankan perintah berikut:

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

Hasilnya akan terlihat seperti berikut ini saat dibuka di Visual Studio:

Screenshot of DGML analysis.

Menganalisis portabilitas

Untuk menganalisis seluruh proyek Anda di Visual Studio, klik kanan proyek Anda di Penjelajah Solusi dan pilih Analisis Portabilitas Assembly. Jika tidak, buka menu Analisis dan pilih Analisis Portabilitas Rakitan. Dari sana, pilih proyek Anda yang dapat dieksekusi atau DLL.

Screenshot of Portability Analyzer from Solution Explorer.

Anda juga dapat menggunakan aplikasi konsol ApiPort.

Ketik perintah berikut untuk menganalisis direktori saat ini:

ApiPort.exe analyze -f .

Untuk menganalisis daftar file .dll tertentu, ketik perintah berikut:

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

Untuk menargetkan versi tertentu, gunakan parameter -t:

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

Jalankan ApiPort.exe -? untuk mendapatkan bantuan lainnya.

Disarankan agar Anda menyertakan semua file exe dan dll terkait yang Anda miliki dan ingin Anda port, dan mengecualikan file yang bergantung pada aplikasi Anda, tetapi Anda tidak memiliki dan tidak dapat melakukan port. Ini akan memberi Anda laporan portabilitas yang paling relevan.

Menampilkan dan menginterpretasikan hasil portabilitas

Hanya API yang tidak didukung oleh Platform Target yang muncul dalam laporan. Setelah menjalankan analisis di Visual Studio, Anda akan melihat tautan file laporan Portabilitas .NET Anda muncul. Jika Anda menggunakan aplikasi konsol ApiPort, laporan Portabilitas .NET Anda disimpan sebagai file dalam format yang Anda tentukan. Defaultnya ada dalam file Excel (.xlsx) di direktori Anda saat ini.

Ringkasan Portabilitas

Screenshot of the Portability Summary.

Bagian Ringkasan Portabilitas dari laporan menunjukkan persentase portabilitas untuk setiap perakitan yang disertakan dalam eksekusi. Dalam contoh sebelumnya, 71,24% api .NET Framework yang digunakan dalam aplikasi svcutil tersedia di Ekstensi .NET Core + Platform. Jika Anda menjalankan alat .NET Portability Analyzer terhadap beberapa rakitan, setiap rakitan harus memiliki baris dalam laporan Ringkasan Portabilitas.

Detail

Screenshot of the Portability Details.

Bagian Detail laporan mencantumkan API yang hilang dari salah satu Platform Yang Ditargetkan yang dipilih.

  • Jenis target: jenis memiliki API yang hilang dari Platform Target
  • Anggota target: metode hilang dari Platform Target
  • Nama assembly: assembly .NET Framework tempat API yang hilang berada.
  • Masing-masing Platform Target yang dipilih adalah satu kolom, seperti nilai ".NET Core": "Tidak didukung" berarti API tidak didukung pada Platform Target ini.
  • Perubahan yang Direkomendasikan: API atau teknologi yang direkomendasikan untuk diubah. Saat ini, bidang ini kosong atau kedaluarsa untuk banyak API. Karena banyaknya API, kami memiliki tantangan signifikan untuk terus memperbaruinya. Kami sedang mencari solusi alternatif untuk memberikan informasi bermanfaat kepada pelanggan.

Assembly yang Hilang

Screenshot of missing assemblies.

Anda mungkin menemukan bagian Assembly yang Hilang di laporan Anda. Bagian ini berisi daftar rakitan yang dirujuk oleh assembly Anda yang dianalisis dan tidak dianalisis. Jika itu adalah assembly yang Anda miliki, sertakan dalam eksekusi penganalisis portabilitas API sehingga Anda bisa mendapatkan laporan portabilitas tingkat API terperinci untuk itu. Jika ini adalah pustaka pihak ketiga, periksa apakah ada versi yang lebih baru yang mendukung platform target Anda, dan pertimbangkan untuk pindah ke versi yang lebih baru. Akhirnya, daftar harus menyertakan semua rakitan pihak ketiga yang bergantung pada aplikasi Anda yang memiliki versi yang mendukung platform target Anda.

Untuk informasi selengkapnya tentang .NET Portability Analyzer, kunjungi dokumentasi GitHub.