Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memberikan gambaran umum tentang apa yang harus Anda pertimbangkan saat mentransfer kode Anda dari .NET Framework ke .NET (sebelumnya bernama .NET Core). Porting ke .NET dari .NET Framework relatif mudah untuk banyak proyek. Kompleksitas proyek Anda menentukan berapa banyak pekerjaan yang perlu Anda lakukan setelah peningkatan awal file proyek.
Proyek tempat model aplikasi tersedia di .NET, seperti pustaka, aplikasi konsol, dan aplikasi desktop, biasanya memerlukan sedikit perubahan. Proyek yang memerlukan model aplikasi baru, seperti pindah ke ASP.NET Core dari ASP.NET, memerlukan lebih banyak pekerjaan. Banyak pola dari model aplikasi lama memiliki setara yang dapat digunakan selama konversi.
Teknologi desktop Windows
Banyak aplikasi yang dibuat untuk .NET Framework menggunakan teknologi desktop seperti Windows Forms atau Windows Presentation Foundation (WPF). Formulir Windows dan WPF tersedia di .NET, tetapi tetap memiliki teknologi khusus Windows.
Pertimbangkan dependensi berikut sebelum Anda memutakhirkan aplikasi Windows Forms atau WPF:
- File proyek untuk .NET menggunakan format yang berbeda dari .NET Framework.
- Proyek Anda mungkin menggunakan API yang tidak tersedia di .NET.
- Kontrol dan pustaka pihak ketiga mungkin belum di-port ke .NET dan hanya tersedia untuk .NET Framework.
- Proyek Anda menggunakan teknologi yang tidak lagi tersedia di .NET.
.NET menggunakan versi sumber terbuka Windows Forms dan WPF dan menyertakan penyempurnaan melalui .NET Framework.
Untuk tutorial tentang meningkatkan aplikasi desktop Anda ke .NET, lihat salah satu artikel berikut ini:
- Cara meningkatkan aplikasi desktop WPF ke .NET
- Mutakhirkan aplikasi .NET Framework Windows Forms ke .NET
API khusus Windows
Aplikasi masih dapat memanggil pustaka asli P/Invoke pada platform yang didukung oleh .NET. Teknologi ini tidak terbatas pada Windows. Namun, jika pustaka yang Anda rujuk khusus Windows, seperti user32.dll atau kernel32.dll, maka kode hanya berfungsi di Windows. Untuk setiap platform yang Anda inginkan untuk dijalankan aplikasi, Anda harus menemukan versi khusus platform, atau membuat kode Anda cukup umum untuk dijalankan di semua platform.
Saat Anda mentransfer aplikasi dari .NET Framework ke .NET, aplikasi Anda mungkin menggunakan pustaka yang disediakan oleh .NET Framework. Banyak API yang tersedia di .NET Framework tidak di-port ke .NET karena bergantung pada teknologi khusus Windows, seperti Windows Registry atau model gambar GDI+.
Paket Kompatibilitas Windows menyediakan sebagian besar permukaan .NET Framework API ke .NET dan disediakan melalui paket NuGet Microsoft.Windows.Compatibility.
Untuk informasi selengkapnya, lihat Menggunakan Paket Kompatibilitas Windows untuk kode port ke .NET.
Mode kompatibilitas .NET Framework
Mode kompatibilitas .NET Framework diperkenalkan dalam .NET Standard 2.0. Mode kompatibilitas memungkinkan proyek .NET Standard dan .NET untuk mereferensikan pustaka .NET Framework seolah-olah dikompilasi untuk kerangka kerja target proyek. Namun, beberapa implementasi .NET mungkin mendukung potongan .NET Framework yang lebih besar daripada yang lain. Misalnya, .NET Core 3.0 memperluas mode kompatibilitas .NET Framework ke Windows Forms dan WPF. Mereferensikan pustaka .NET Framework tidak berfungsi untuk semua proyek, seperti jika pustaka menggunakan API WPF, tetapi tidak memblokir banyak skenario porting. Untuk informasi selengkapnya, lihat Menganalisis dependensi Anda ke kode port dari .NET Framework ke .NET.
Mereferensikan pustaka .NET Framework tidak berfungsi dalam semua kasus, karena bergantung pada API .NET Framework mana yang digunakan dan apakah API ini didukung oleh kerangka kerja target proyek atau tidak. Selain itu, beberapa API .NET Framework hanya akan berfungsi di Windows. Mode kompatibilitas .NET Framework membuka blokir banyak skenario porting, tetapi Anda harus menguji proyek Anda agar berfungsi dengan baik pada runtime. Untuk informasi selengkapnya, lihat Menganalisis ketergantungan Anda untuk memindahkan kode dari .NET Framework ke.
Perubahan kerangka kerja target dalam proyek bergaya SDK
Seperti yang disebutkan sebelumnya, file proyek untuk .NET menggunakan format yang berbeda dari .NET Framework, yang dikenal sebagai format proyek bergaya SDK. Bahkan jika Anda tidak berpindah dari .NET Framework ke .NET, Anda masih harus meningkatkan file proyek ke format terbaru. Cara menentukan kerangka kerja target berbeda dalam proyek bergaya SDK. Di .NET Framework, <TargetFrameworkVersion> properti digunakan dengan moniker yang menentukan versi .NET Framework. Misalnya, .NET Framework 4.7.2 terlihat seperti cuplikan berikut:
<PropertyGroup>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
</PropertyGroup>
Proyek bergaya SDK menggunakan properti yang berbeda untuk mengidentifikasi kerangka kerja target, <TargetFramework> properti . Saat menargetkan .NET Framework, moniker dimulai dengan net dan berakhir dengan versi .NET Framework tanpa periode apa pun. Misalnya, moniker untuk menargetkan .NET Framework 4.7.2 adalah net472:
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
Untuk daftar semua moniker target, lihat Kerangka kerja target dalam proyek bergaya SDK.
Teknologi yang tidak tersedia
Ada beberapa teknologi dalam .NET Framework yang tidak ada di .NET:
-
Membuat domain aplikasi lain tidak didukung. Untuk isolasi kode, gunakan proses atau kontainer terpisah sebagai alternatif.
-
Jarak jauh digunakan untuk berkomunikasi di seluruh domain aplikasi, yang tidak lagi didukung. Untuk komunikasi sederhana antar proses, pertimbangkan mekanisme komunikasi antarproses (IPC) sebagai alternatif untuk metode pemanggilan jarak jauh, seperti kelas System.IO.Pipes atau kelas MemoryMappedFile. Untuk skenario yang lebih kompleks, pertimbangkan kerangka kerja seperti StreamJsonRpc atau ASP.NET Core (baik menggunakan layanan API Web gRPC atau RESTful).
Karena remoting tidak didukung, panggilan ke
BeginInvoke()danEndInvoke()pada objek delegasi melemparPlatformNotSupportedException. -
CAS adalah teknik sandboxing yang didukung oleh .NET Framework tetapi tidak digunakan lagi dalam .NET Framework 4.0. Ini digantikan oleh Transparansi Keamanan dan tidak didukung di .NET. Sebagai gantinya, gunakan batas keamanan yang disediakan oleh sistem operasi, seperti virtualisasi, kontainer, atau akun pengguna.
-
Mirip dengan CAS, teknik sandboxing transparansi keamanan tidak lagi direkomendasikan untuk aplikasi .NET Framework dan tidak didukung di .NET. Sebagai gantinya, gunakan batas keamanan yang disediakan oleh sistem operasi, seperti virtualisasi, kontainer, atau akun pengguna.
-
System.EnterpriseServices (COM+) tidak didukung di .NET.
Windows Workflow Foundation (WF)
WF tidak didukung di .NET. Untuk alternatif, lihat CoreWF.
Untuk informasi selengkapnya tentang teknologi yang tidak didukung ini, lihat Teknologi .NET Framework tidak tersedia di .NET 6+.
Lintas platform
.NET (sebelumnya dikenal sebagai .NET Core) dirancang untuk menjadi lintas platform. Jika kode Anda tidak bergantung pada teknologi khusus Windows, kode tersebut dapat berjalan di platform lain seperti macOS, Linux, dan Android. Kode tersebut mencakup jenis proyek seperti:
- Perpustakaan
- Alat berbasis konsol
- automasi
- situs ASP.NET
.NET Framework adalah komponen khusus Windows. Ketika kode Anda menggunakan teknologi atau API khusus Windows, seperti Windows Forms dan WPF, kode masih dapat berjalan pada .NET tetapi tidak berjalan pada sistem operasi lain.
Ada kemungkinan bahwa pustaka atau aplikasi berbasis konsol Anda dapat digunakan lintas platform tanpa banyak berubah. Saat Anda mentransfer ke .NET, Anda mungkin ingin mempertimbangkan hal ini dan menguji aplikasi Anda di platform lain.
Masa depan .NET Standard
.NET Standard adalah spesifikasi formal dari API .NET yang tersedia pada beberapa implementasi .NET. Motivasi di balik .NET Standard adalah untuk membangun keseragaman yang lebih besar dalam ekosistem .NET. Dimulai dengan .NET 5, pendekatan yang berbeda untuk membangun keseragaman telah diadopsi, dan pendekatan baru ini menghilangkan kebutuhan akan .NET Standard dalam banyak skenario. Untuk informasi selengkapnya, lihat .NET 5+ dan .NET Standard.
.NET Standard 2.0 adalah versi terakhir yang mendukung .NET Framework.
Alat untuk membantu porting
Alih-alih memindahkan aplikasi secara manual dari .NET Framework ke .NET, Anda dapat menggunakan alat yang berbeda untuk membantu mengotomatiskan beberapa aspek peningkatan. Memporting proyek yang kompleks merupakan suatu proses yang rumit. Alat-alat mungkin membantu dalam perjalanan itu.
Bahkan jika Anda menggunakan alat untuk membantu memindahkan aplikasi, Anda harus meninjau bagian Pertimbangan saat porting di artikel ini.
Asisten modernisasi aplikasi GitHub Copilot
Modernisasi aplikasi GitHub Copilot adalah asisten obrolan GitHub Copilot yang membantu Anda merencanakan dan meningkatkan proyek ke versi .NET yang lebih baru, bermigrasi ke Azure, memperbarui dependensi, dan menerapkan perbaikan kode. Migrasi Azure didukung oleh Penilaian Aplikasi dan Kode untuk .NET
Asisten obrolan ini mendukung jalur peningkatan berikut:
- Tingkatkan proyek dari versi .NET yang lebih lama ke yang terbaru.
- Tingkatkan proyek dari .NET Framework ke versi terbaru .NET.
- Modernisasi basis kode Anda dengan fitur baru.
- Memigrasikan komponen dan layanan ke Azure.
Ini juga berfungsi pada berbagai jenis proyek, seperti:
- ASP.NET dan teknologi terkait seperti MVC, Razor Pages, Web API
- Blazor
- Azure Functions
- Windows Presentation Foundation
- Formulir Windows
- Pustaka kelas
- Aplikasi konsol
Kapan menggunakan:
Gunakan modernisasi aplikasi GitHub Copilot saat Anda menginginkan pengalaman end-to-end yang didukung AI untuk meningkatkan proyek dan dependensi .NET Framework ke .NET modern—mencakup penilaian, perencanaan, remediasi, dan panduan untuk memigrasikan aplikasi ke Azure.
Penilaian aplikasi dan kode untuk .NET
Penilaian aplikasi dan kode Azure Migrate untuk .NET menyediakan analisis kode dan aplikasi, bersama dengan rekomendasi untuk merencanakan penyebaran cloud. Ini membantu Anda dengan percaya diri menjalankan solusi penting bisnis di cloud dengan menawarkan penilaian yang berfokus pada pengembang terhadap kode sumber Anda. Alat ini juga memberikan rekomendasi dan contoh untuk mengoptimalkan kode dan konfigurasi untuk Azure, mengikuti praktik terbaik industri.
Alat ini juga digunakan oleh modernisasi aplikasi GitHub Copilot untuk pengalaman .NET.
Kapan menggunakan:
Gunakan aplikasi Azure Migrate dan penilaian kode untuk toolset .NET untuk penilaian dan rekomendasi untuk memigrasikan basis kode yang ada ke Azure. Penilaian aplikasi dan kode Azure Migrate pada dasarnya adalah subset dari modernisasi aplikasi GitHub Copilot untuk pengalaman .NET.
Asisten Peningkatan .NET
Asisten Peningkatan .NET adalah alat baris perintah yang dapat dijalankan pada berbagai jenis aplikasi .NET Framework. Ini dirancang untuk membantu meningkatkan aplikasi .NET Framework ke .NET. Setelah menjalankan alat, dalam banyak kasus aplikasi akan membutuhkan lebih banyak upaya untuk menyelesaikan peningkatan. Alat ini mencakup penginstalan penganalisis yang dapat membantu menyelesaikan peningkatan. Alat ini berfungsi pada jenis aplikasi .NET Framework berikut:
- Formulir Windows
- WPF
- ASP.NET MVC
- Console
- Pustaka kelas
Alat ini menggunakan alat lain yang tercantum dalam artikel ini, seperti coba konversi, dan memandu proses peningkatan. Untuk informasi selengkapnya tentang alat ini, lihat Gambaran Umum Asisten Peningkatan .NET.
Kapan menggunakan:
Gunakan saat solusi yang didukung AI seperti modernisasi aplikasi GitHub Copilot tidak tersedia.
try-convert
Alat ini try-convert adalah alat global .NET yang dapat mengonversi proyek atau seluruh solusi ke .NET SDK, termasuk memindahkan aplikasi desktop ke .NET. Namun, alat ini tidak disarankan jika proyek Anda memiliki proses build yang rumit seperti tugas kustom, target, atau impor.
Untuk informasi selengkapnya, lihat try-convert repositori GitHub.
Penganalisis kompatibilitas platform
Penganalisis kompatibilitas Platform menganalisis apakah Anda menggunakan API yang melemparkan PlatformNotSupportedException pada runtime atau tidak. Meskipun menemukan salah satu API ini tidak mungkin jika Anda berpindah dari .NET Framework 4.7.2 atau yang lebih tinggi, ada baiknya untuk memeriksanya. Untuk informasi selengkapnya tentang API yang melemparkan pengecualian pada .NET, lihat API yang selalu melemparkan pengecualian pada .NET Core.
Untuk informasi selengkapnya, lihat Penganalisis kompatibilitas platform.
Pertimbangan saat porting
Saat memindahkan aplikasi Anda ke .NET, pertimbangkan saran berikut secara berurutan:
✔️ PERTIMBANGKAN untuk menggunakan modernisasi aplikasi GitHub Copilot untuk meningkatkan proyek Anda. GitHub Copilot sangat kuat dalam mengidentifikasi dan memperbaiki ketidakcocokan saat porting. Ini mengotomatiskan sebagian besar langkah manual yang dirinci dalam artikel ini dan memberi Anda titik awal yang bagus untuk melanjutkan jalur peningkatan Anda.
✔️ PERTIMBANGKAN untuk memeriksa dependensi Anda terlebih dahulu. Dependensi Anda harus menargetkan .NET, .NET Standard, atau .NET Core.
✔️ Lakukan peningkatan dari file packages.config NuGet ke PackageReference pengaturan dalam file proyek. Gunakan Visual Studio untuk mengonversi package.config file.
✔️ PERTIMBANGKAN untuk meningkatkan ke format file proyek terbaru meskipun Anda belum dapat mem-port aplikasi Anda. Proyek .NET Framework menggunakan format proyek yang sudah kedaluarsa. Meskipun format proyek terbaru, yang dikenal sebagai proyek bergaya SDK, dibuat untuk .NET Core dan seterusnya, format ini juga berfungsi dengan .NET Framework. Memiliki file proyek Anda dalam format terbaru memberi Anda dasar yang baik untuk memindahkan aplikasi Anda di masa mendatang.
✔️ LAKUKAN memperbarui target proyek .NET Framework Anda ke minimal .NET Framework 4.7.2. Ini memastikan ketersediaan alternatif API terbaru untuk kasus di mana .NET Standard tidak mendukung API yang ada.
✔️ PERTIMBANGKAN untuk menargetkan .NET 8, yang merupakan rilis dukungan jangka panjang (LTS).
✔️ DO menargetkan .NET 8+ untuk proyek Windows Forms dan WPF . .NET 8 dan versi yang lebih baru berisi banyak peningkatan untuk aplikasi Desktop.
✔️ PERTIMBANGKAN untuk menargetkan .NET Standard 2.0 jika Anda meningkatkan pustaka yang mungkin juga digunakan dengan proyek .NET Framework. Anda juga dapat memasang target ganda untuk pustaka Anda, dengan menargetkan baik .NET Framework maupun .NET Standard.
✔️ TAMBAHKAN referensi ke paket NuGet Microsoft.Windows.Compatibility jika, setelah bermigrasi, Anda mendapatkan kesalahan karena API yang hilang. Sebagian besar permukaan .NET Framework API tersedia untuk .NET melalui paket NuGet.