.NET Core 3 untuk Windows Desktop

Pada bulan September, kami merilis dukungan .NET Core untuk membangun aplikasi desktop Windows, termasuk WPF dan Windows Forms. Sejak itu, kami sangat senang melihat begitu banyak pengembang berbagi cerita tentang migrasi aplikasi desktop (dan mengontrol perpustakaan) ke .NET Core. Kami terus mendengar cerita tentang pengembang desktop .NET Windows yang memberi daya pada bisnis mereka dengan WPF dan Formulir Windows, terutama dalam skenario di mana desktop bersinar, termasuk:

  • Aplikasi UI padat formulir data (FOD)
  • UI latensi rendah responsif
  • Aplikasi yang perlu dijalankan offline / terputus
  • Aplikasi dengan ketergantungan pada driver perangkat kustom

Ini hanyalah permulaan untuk pengembangan aplikasi Windows pada .NET Core. Baca terus untuk mengetahui lebih lanjut tentang manfaat .NET Core untuk membangun aplikasi Windows.



Mengapa Windows desktop pada .NET Core?


.NET Core (dan di masa depan .NET 5 yang dibangun di atas .NET Core) akan menjadi masa depan .NET. Kami berkomitmen untuk mendukung .NET Framework selama bertahun-tahun yang akan datang, namun tidak akan menerima fitur baru, hanya akan ditambahkan ke .NET Core (dan akhirnya .NET 5). Untuk meningkatkan tumpukan desktop Windows dan memungkinkan pengembang .NET desktop untuk mendapatkan manfaat dari semua pembaruan di masa depan, kami membawa Windows Forms dan WPF ke .NET Core. Mereka masih akan tetap menggunakan teknologi Windows saja karena ada ketergantungan yang erat dengan Windows API. Tetapi .NET Core, selain cross-platform, memiliki banyak fitur lain yang dapat meningkatkan aplikasi desktop.

Pertama-tama, semua perbaikan runtime dan fitur bahasa akan ditambahkan hanya ke .NET Core dan di masa depan ke. NET 5. Contoh yang baik di sini adalah C # 8 yang menjadi tersedia di .NET Core 3.0. Selain itu, versi .NET Core versi Windows Forms dan WPF akan menjadi bagian dari platform .NET 5. Jadi, dengan porting aplikasi Anda ke .NET Core hari ini Anda sedang mempersiapkannya untuk .NET 5.

Juga, .NET Core memberikan fleksibilitas penerapan untuk aplikasi Anda dengan opsi baru yang tidak tersedia di .NET Framework, seperti:

  • Penempatan berdampingan. Sekarang Anda dapat memiliki beberapa versi .NET Core pada mesin yang sama dan dapat memilih versi mana yang harus ditargetkan oleh setiap aplikasi Anda.
  • Penempatan mandiri. Anda dapat menggunakan platform .NET Core dengan aplikasi Anda dan menjadi sepenuhnya independen dari lingkungan pengguna akhir Anda - aplikasi Anda memiliki semua yang diperlukan untuk dijalankan pada mesin Windows apa pun.
  • Ukuran aplikasi yang lebih kecil. Di .NET Core 3 kami memperkenalkan fitur baru yang disebut tautan (juga kadang-kadang disebut sebagai trimmer), yang akan menganalisis kode Anda dan termasuk dalam penyebaran mandiri Anda hanya rakitan dari .NET Core yang diperlukan untuk aplikasi Anda. Dengan begitu semua bagian platform yang tidak digunakan untuk kasing Anda akan dipangkas.
  • File .exe tunggal. Anda dapat mengemas aplikasi Anda dan platform .NET Core dalam satu file .exe.
  • Peningkatan kinerja runtime. .NET Core memiliki banyak optimasi kinerja dibandingkan dengan .NET Framework. Ketika Anda berpikir tentang sejarah .NET Core, yang dibangun awalnya untuk beban kerja web dan server, akan membantu untuk memahami jika aplikasi Anda mungkin melihat manfaat nyata dari optimasi runtime. Khususnya, aplikasi desktop dengan ketergantungan berat pada File I / O, jaringan, dan operasi basis data kemungkinan akan melihat peningkatan kinerja untuk skenario tersebut . Beberapa area di mana Anda mungkin tidak melihat banyak perubahan adalah kinerja rendering UI atau kinerja startup aplikasi.

Dengan mengatur properti <PublishSingleFile> , <RuntimeIdentifier> dan <PublishTrimmed> di profil penerbitan Anda akan dapat menggunakan aplikasi mandiri yang dipangkas sebagai file .exe tunggal seperti yang ditunjukkan pada contoh di bawah ini.

 <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup> 

Perbedaan antara desktop .NET Framework dan desktop .NET Core


Saat mengembangkan aplikasi desktop, Anda tidak akan melihat banyak perbedaan antara .NET Framework dan .NET Core versi WPF dan Windows Forms. Bagian dari upaya kami adalah untuk menyediakan paritas fungsional antara platform ini di area desktop dan meningkatkan pengalaman .NET Core di masa depan. Aplikasi WPF didukung sepenuhnya pada .NET Core dan siap untuk Anda gunakan, sementara kami sedang mengerjakan pembaruan dan peningkatan kecil. Untuk Formulir Windows, bagian runtime sepenuhnya porting ke .NET Core dan tim sedang bekerja pada Desainer Formulir Windows. Kami berencana untuk menyiapkannya pada kuartal keempat tahun 2020 dan untuk saat ini Anda dapat melihat versi Pratinjau desainer di Visual Studio 16.4 Pratinjau 3 atau lebih baru. Jangan lupa untuk mengatur kotak centang di Tools-> Opsi-> Fitur Pratinjau-> Gunakan Pratinjau desainer Windows Forms untuk aplikasi .NET Core dan restart Visual Studio. Harap diingat bahwa pengalaman ini terbatas untuk saat ini karena pekerjaan sedang berlangsung.

Memecah perubahan


Ada beberapa perubahan yang melanggar antara .NET Framework dan .NET Core tetapi sebagian besar kode yang terkait dengan Windows Forms dan area WPF porting ke Core apa adanya. Jika Anda menggunakan komponen seperti Klien WCF, Keamanan Akses Kode, Domain Aplikasi, Interop, dan Remoting, Anda perlu memperbarui kode Anda jika ingin beralih ke .NET Core.

Satu hal yang perlu diingat - jalur output default pada .NET Core berbeda dari pada .NET Framework, jadi jika Anda memiliki beberapa asumsi dalam kode Anda tentang struktur file / folder dari aplikasi yang berjalan maka mungkin akan gagal saat runtime.

Juga, ada perubahan dalam cara Anda mengkonfigurasi fitur .NET. .NET Core sebagai ganti file machine.config menggunakan file <something>.runtimeconfig.json yang dilengkapi dengan aplikasi dan memiliki tujuan umum yang sama dan informasi serupa. Beberapa konfigurasi seperti system.diagnostics , system.net , atau system.servicemodel tidak didukung, sehingga file konfigurasi aplikasi akan gagal dimuat jika berisi salah satu dari bagian ini. Perubahan ini memengaruhi skenario Sistem, System.Diagnostics penelusuran, dan skenario klien WCF yang biasanya dikonfigurasi menggunakan konfigurasi XML sebelumnya. Di .NET Core, Anda harus mengonfigurasinya dalam kode. Untuk mengubah perilaku tanpa mengkompilasi ulang, pertimbangkan untuk menyiapkan tracing dan tipe WCF menggunakan nilai yang diambil dari sumber konfigurasi Microsoft.Extensions.Configuration atau dari appSettings .

Anda dapat menemukan informasi lebih lanjut tentang perbedaan antara .NET Core dan .NET Framework dalam dokumentasi .

Memulai


Lihat tutorial video singkat ini:


Porting dari .NET Framework ke .NET Core


Pertama-tama, jalankan Portability Analyzer dan jika perlu, perbarui kode Anda untuk mendapatkan kompatibilitas 100% dengan .NET Core. Berikut adalah petunjuk tentang cara menggunakan Portability Analyzer . Kami menyarankan untuk menggunakan kontrol sumber atau untuk membackup kode Anda sebelum Anda membuat perubahan pada aplikasi Anda seandainya refactoring tidak berjalan seperti yang Anda inginkan, dan Anda memutuskan untuk kembali ke keadaan awal Anda.

Ketika aplikasi Anda sepenuhnya kompatibel dengan .NET Core, Anda siap untuk port itu. Sebagai titik awal, Anda dapat mencoba alat yang kami buat untuk membantu mengotomatiskan proyek .NET Framework Anda menjadi .NET Core - coba-konversi .

Penting untuk diingat bahwa alat ini hanyalah titik awal dalam perjalanan Anda ke .NET Core. Ini juga bukan produk Microsoft yang didukung. Meskipun dapat membantu Anda dengan beberapa aspek mekanis migrasi, ini tidak akan menangani semua skenario atau jenis proyek. Jika solusi Anda memiliki proyek yang ditolak atau gagal dikonversi oleh alat, Anda harus melakukan porta dengan tangan. Jangan khawatir, kami memiliki banyak tutorial tentang cara melakukannya (di akhir bagian ini).

Alat coba-konversi akan mencoba untuk memigrasikan file proyek gaya lama Anda ke gaya SDK baru dan menargetkan ulang proyek yang berlaku ke .NET Core. Untuk perpustakaan Anda, kami menyerahkan kepada Anda untuk melakukan panggilan terkait platform: cuaca yang ingin Anda targetkan .NET Core atau .NET Standard. Anda dapat menentukannya di file proyek Anda dengan memperbarui nilai untuk <TargetFramework> . Perpustakaan tanpa .NET Core-specific dependencies seperti WPF atau Windows Forms dapat mengambil manfaat dari penargetan .NET Standard:

 <TargetFramework>netstandard2.1</TargetFramework> 

sehingga mereka dapat digunakan oleh penelepon yang menargetkan banyak .NET Platform. Di sisi lain, jika pustaka menggunakan fitur yang membutuhkan .NET Core (seperti Windows UI desktop APIs), tidak apa-apa bagi perpustakaan untuk menargetkan .NET Core:

 <TargetFramework>netcoreapp3.0</TargetFramework> 

try-convert adalah alat global yang dapat Anda instal di mesin Anda, lalu Anda dapat menelepon dari CLI:

 C:\> try-convert -p <path to your project> 

atau

 C:\> try-convert -w <path to your solution> 

Seperti yang disebutkan sebelumnya, jika alat coba-konversi tidak bekerja untuk Anda, berikut adalah bahan-bahan tentang cara port aplikasi Anda dengan tangan.

Video


Dokumentasi

Source: https://habr.com/ru/post/id475064/


All Articles