Saya telah mengembangkan program WinForms selama beberapa tahun. Saya sekarang melihat ke .NET Core (termasuk ASP.NET Core MVC). Saya mencari teknologi desktop GUI yang baru. Dalam Visual Studio 2015 pembaruan 3 saya tidak dapat melihat opsi apa pun untuk membuat aplikasi GUI di .NET Core. Apa yang saya lewatkan?
103
Jawaban:
Anda tidak melewatkan apa pun. MS tidak mengirimkan cara yang masuk akal untuk membuat aplikasi GUI secara langsung menggunakan .Net Core hingga .Net Core 3, meskipun UWP (Platform Windows Universal) sebagian dibangun di atas .Net Core.
.Net Core 3.0 menyertakan dukungan untuk Winforms dan WPF, meskipun hanya untuk Windows.
.Net 6 akan menyertakan .Net MAUI, yang akan mendukung aplikasi desktop Windows dan macOS dan aplikasi seluler, dengan aplikasi desktop Linux yang didukung oleh komunitas (bukan MS). .Net 5 akan menyertakan versi pratinjau .Net MAUI.
Untuk opsi lintas platform pihak ketiga, lihat jawaban lain.
sumber
AvaloniaUI sekarang memiliki dukungan untuk berjalan di atas .NET Core di Win / OSX / Linux. XAML, binding dan template kontrol disertakan.
misalnya untuk mengembangkan di MacO dengan Rider:
New Solution
-> (Dekat bagian atas Daftar Templat) ->More Templates
-> TombolInstall Template...
-> telusuri direktori tempat Anda mengkloning templat pada langkah 1.Reload
TombolNew Solution
Daftar Template!sumber
Anda bisa menggunakan Electron dan menyambungkannya dengan Edge.js resp. tepi elektron . Edge.js memungkinkan electron (node.js) untuk memanggil dll .net dan sebaliknya. Dengan cara ini Anda dapat menulis GUI dengan HTML, CSS dan JavaScript dan backend dengan inti .net. Elektron itu sendiri juga lintas platform dan berbasis browser kromium.
sumber
Sekarang dimungkinkan untuk menggunakan Qt / QtQuick / QML dengan .NET Core, menggunakan Qml.Net .
Ini sangat berkinerja (bukan "pinvoke chatty"), berfitur lengkap dan bekerja di Linux / OSX / Windows.
Lihat posting blog saya untuk melihat bagaimana perbandingannya dengan opsi lain di luar sana saat ini.
PS: Saya penulisnya.
sumber
Salah satu opsi adalah menggunakan Electron dengan JavaScript, HTML, dan CSS untuk UI dan membangun aplikasi konsol .Net Core yang akan menghosting sendiri api web untuk logika back-end. Electron akan memulai aplikasi konsol di latar belakang yang akan menampilkan layanan di localhost: xxxx.
Dengan cara ini Anda dapat menerapkan semua logika back-end menggunakan .Net agar dapat diakses melalui permintaan HTTP dari JavaScript.
Lihatlah posting ini, ini menjelaskan cara membangun aplikasi desktop lintas platform dengan Electron dan .Net Core dan memeriksa kode di github
sumber
Untuk membuat UI berbasis konsol, Anda dapat menggunakan gui.cs . Ini adalah open-source (dari Miguel, pencipta Xamarin), dan berjalan pada inti .Net pada Windows, Linux & MacOs.
Ini memiliki komponen berikut:
Contoh tangkapan layar
sumber
kami membuat kode solusi open source untuk elektron dengan .net core: Electron.NET . https://github.com/ElectronNET/Electron.NET
Nikmati!
sumber
.NET Core 3 akan memiliki dukungan untuk membuat Aplikasi Desktop Windows. Saya menonton demo teknologi kemarin selama Konferensi NET. Ini adalah satu-satunya postingan blog yang dapat saya temukan, tetapi menggambarkan hal tersebut: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- aplikasi-desktop /
sumber
tl; dr - Saya tidak yakin bahwa mungkin .NET Core devs menyediakan kerangka kerja GUI lintas platform.
Saya merasa seperti mengharapkan kerangka GUI lintas platform untuk digabungkan ke dalam perkakas resmi (terutama versi lama dari perkakas - Anda menyebutkan bahwa Anda menjalankan VS 2015 pembaruan 3) untuk versi awal .NET Core sedikit prematur.
Kerangka GUI benar-benar cukup berat, dan bergantung pada abstraksi perangkat keras yang sudah ada di mesin host. Pada Windows umumnya ada satu window manager (WM) dan lingkungan desktop (DE) yang digunakan oleh sebagian besar pengguna, tetapi pada banyak distribusi Linux yang didukung, ada sejumlah kemungkinan WM dan DE - diberikan sebagian besar pengguna akan menggunakan X-Server atau Wayland dalam kombinasi dengan KDE, Gnome atau XFCE. Tetapi tidak ada instalasi Linux yang sama.
Fakta bahwa komunitas open source tidak dapat benar-benar menyelesaikan pengaturan "standar" untuk VM dan DE berarti akan sangat sulit bagi pengembang .NET Core untuk membuat kerangka kerja GUI yang akan bekerja di semua platform dan kombinasi DE dan WM.
Banyak orang di sini memiliki beberapa saran bagus (mulai dari penggunaan ASP.NET Core untuk membuat aplikasi Web dan menggunakan browser untuk mendaftar sekumpulan kerangka kerja lintas platform). Jika Anda melihat beberapa kerangka GUI lintas platform yang disebutkan yang terdaftar, Anda akan melihat betapa beratnya mereka.
Namun, ada cahaya di ujung terowongan saat Miguel de Icaza memamerkan Xamarin yang berjalan secara naif di Linux dan MacOS di .NET Conf tahun ini (2017, jika Anda membaca ini di masa mendatang), jadi mungkin patut untuk dicoba itu jika sudah siap.
(tetapi Anda harus meningkatkan dari VS 2015 ke VS 2017 untuk mengakses fitur .NET Core 2.0)
sumber
Saya sedang mengerjakan proyek yang mungkin membantu: https://github.com/gkmo/CarloSharp
Aplikasi berikut ditulis dalam .net dengan UI dalam HTML / JS / CSS (Angular)
sumber
Anda dapat mengembangkan aplikasi web dengan .NET Core dan MVC dan merangkumnya dalam aplikasi JavaScript universal Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Ini masih merupakan aplikasi web tetapi ini adalah cara yang sangat ringan untuk mengubah aplikasi web menjadi aplikasi desktop tanpa mempelajari kerangka kerja baru atau / dan mengembangkan kembali UI, dan ini berfungsi dengan baik.
Ketidaknyamanan ini tidak seperti electron atau ReactXP misalnya, hasilnya adalah aplikasi Windows universal dan bukan aplikasi desktop lintas platform.
sumber
Ya, itu mungkin.
.NET Core tidak memiliki komponen apa pun untuk aplikasi GUI asli di luar kotak. Namun, ada paket NuGet untuknya yang disebut Electron.NET , sesuai jawaban Gregor Biswanger.
Electron adalah kerangka kerja yang memungkinkan Anda membangun aplikasi GUI asli di atas Node.js. Electron.NET adalah paket NuGet yang memungkinkan Anda untuk memanfaatkan Electron dan Node.js dari dalam kode Inti .NET Anda.
Kabar baiknya adalah Anda tidak perlu mempelajari JavaScript, Electron atau Node.js untuk dapat menggunakan paket NuGet. File JS berjalan di dalam aplikasi Anda, tetapi mereka dibuat secara otomatis oleh proses pembangunan.
Yang Anda lakukan hanyalah membangun aplikasi ASP.NET Core MVC yang cukup standar. Satu-satunya perbedaan adalah, alih-alih berjalan di browser, ia berjalan sebagai aplikasi berjendela asli. Selain hanya beberapa baris kode khusus untuk paket Electron.NET, Anda tidak perlu mempelajari apa pun di atas ASP.NET Core MVC.
Halaman ini memberikan tutorial tentang cara menggunakannya. Ini juga berisi beberapa tautan ke repositori kode sampel.
sumber
Necromancing.
Untuk kasus khusus aplikasi WinForms yang ada :
Ada cara - meskipun saya tidak tahu seberapa baik cara kerjanya.
Bunyinya seperti ini:
Ambil implementasi WinForms dari mono.
Porting ke .NET Core atau NetStandard.
Kompilasi ulang aplikasi WinForms Anda dengan System.Windows.Forms baru.
Perbaiki apa pun yang mungkin rusak oleh NetCore.
Doakan agar mono menerapkan bagian yang Anda butuhkan dengan sempurna.
(jika tidak, Anda selalu dapat berhenti berdoa, dan mengirim permintaan tarik ke mono-proyek dengan perbaikan / patch / fitur Anda)
Ini repo CoreFX WinForms saya:
https://github.com/ststeiger/System.CoreFX.Forms
sumber
Ini pertanyaan lama, tapi ya, dimungkinkan untuk mengembangkan aplikasi desktop lintas platform (GUI), untuk Windows, Linux, dan macOS, menggunakan VSCode, .Net Core, C #, gtk3, gtksharp dan Glade sebagai GUI Designer.
Begini caranya .
sumber
Jika Anda menggunakan
.Net Core 3.0
dan di atas melakukan langkah-langkah berikut dan Anda siap melakukannya: (Saya akan menggunakan .NET Core CLI , tetapi Anda juga dapat menggunakan Visual Studio)md MyWinFormsApp
langkah opsionalcd MyWinFormsApp
langkah opsionaldotnet new sln -n MyWinFormsApp
langkah opsional, tapi itu ide yang bagusdotnet new winforms -n MyWinFormsApp
Maaf, ini bukan pilihandotnet sln add MyWinFormsApp
lakukan ini jika Anda melakukan langkah # 3Oke, Anda bisa berhenti membaca jawaban saya dan mulai menambahkan kode ke
MyWinFormsApp
proyek. tetapi jika Anda ingin bekerja dengan Desainer Formulir, teruslah membaca.MyWinFormsApp.csproj
file dan ubah<TargetFramework>netcoreapp3.1<TargetFramework>
ke<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(jika Anda menggunakannetcoreapp3.0
jangan khawatir, ubah ke<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Setelah melakukan langkah-langkah ini, inilah yang seharusnya Anda hasilkan:
Program.cs
dan tambahkan preprocessor-if berikutSekarang Anda dapat membuka
MyWinFormsApp
proyek menggunakan Visual Studio 2019 ( saya pikir Anda juga dapat menggunakan Visual Studio 2017, tetapi saya tidak yakin ) dan klik dua kaliForm1.cs
dan Anda akan melihat ini:Oke, buka Toolbox (
Ctrl+W,X
) dan mulai menambahkan kontrol ke aplikasi Anda dan membuatnya cantik.Anda dapat membaca lebih lanjut tentang designer @ Windows Forms .NET Core Designer
sumber