Bangun aplikasi desktop lintas platform dengan .NET 8 dan Blazor, ASP.NET Core (Razor Pages, MVC).
Electron.NET adalah pembungkus aplikasi Electron asli dengan aplikasi ASP.NET Core yang tertanam. Melalui jembatan IPC Electron.NET kami dapat memanggil API Electron dari .NET.
Ekstensi CLI menampung perangkat kami untuk membangun dan memulai aplikasi Electron.NET.
Ya... ada banyak pendekatan berbeda untuk menjalankan aplikasi desktop X-plat. Kami pikir akan lebih baik bagi pengembang .NET untuk menggunakan lingkungan ASP.NET Core dan menyematkannya di dalam lingkungan X-plat yang cukup kuat yang disebut Electron. Porting Electron ke .NET bukanlah tujuan proyek ini, setidaknya kami tidak tahu bagaimana melakukannya. Kami hanya menggabungkan ASP.NET Core & Electron.
ElectronNET.API | ElektronNET.CLI
CLI Electron.NET saat ini membangun binari Windows/macOS/Linux. API kami menggunakan .NET 8, jadi basis OS minimum kami sama dengan .NET 8.
Anda juga harus menginstal:
Selain obrolan di Gitter dan isu-isu yang dibahas di sini Anda juga dapat menggunakan StackOverflow dengan tag electron.net
.
Jika Anda ingin mensponsori pemeliharaan dan pengembangan lebih lanjut dari proyek ini, lihat bagian donasi.
Untuk mengaktifkan dan berkomunikasi dengan API Elektron "asli" (semacam asli...) sertakan paket NuGet ElectronNET.API di aplikasi ASP.NET Core Anda.
PM > Install-Package ElectronNET.API
Anda memulai Electron.NET dengan UseElectron
WebHostBuilder-Extension dan membuka Jendela Electron:
using ElectronNET . API ;
using ElectronNET . API . Entities ;
var builder = WebApplication . CreateBuilder ( args ) ;
builder . WebHost . UseElectron ( args ) ;
// Is optional, but you can use the Electron.NET API-Classes directly with DI (relevant if you want more encoupled code)
builder . Services . AddElectron ( ) ;
var app = builder . Build ( ) ;
.. .
await app . StartAsync ( ) ;
// Open the Electron-Window here
await Electron . WindowManager . CreateWindowAsync ( ) ;
app . WaitForShutdown ( ) ;
Anda memulai Electron.NET dengan UseElectron
WebHostBuilder-Extension.
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;
Buka Jendela Elektron di file Startup.cs :
public void Configure ( IApplicationBuilder app , IWebHostEnvironment env )
{
//...
Electron . WindowManager . CreateWindowAsync ( ) ;
}
Untuk memulai aplikasi pastikan Anda telah menginstal paket "ElectronNET.CLI" sebagai alat global:
dotnet tool install ElectronNET.CLI -g
Untuk pertama kalinya, Anda memerlukan inisialisasi proyek Electron.NET. Ketik perintah berikut di folder ASP.NET Core Anda:
electronize init
electronize start
Hanya
electronize start
pertama yang lambat. Berikutnya akan berjalan lebih cepat.
Pengamat file disertakan dengan Electron.NET versi 8.31.1. Misalnya, perubahan file dapat memicu kompilasi, eksekusi pengujian, atau penerapan. Jendela Electron.NET akan otomatis disegarkan dan perubahan kode baru akan terlihat lebih cepat. Perintah Electron.NET CLI berikut diperlukan:
electronize start /watch
Hanya
electronize start
pertama yang lambat. Berikutnya akan berjalan lebih cepat.
Mulai aplikasi Electron.NET Anda dengan perintah Electron.NET CLI. Di Visual Studio, lampirkan ke instance aplikasi Anda yang sedang berjalan. Buka Menu Debug dan klik Lampirkan ke Proses... . Urutkan berdasarkan nama proyek Anda di sebelah kanan dan pilih dari daftar.
Dokumentasi lengkap akan menyusul. Sampai saat itu lihat kode sumber contoh aplikasi:
Demo API Electron.NET
Dalam video YouTube ini, kami menunjukkan cara membuat proyek baru, menggunakan Electron.NET API, men-debug aplikasi, dan membuat aplikasi desktop yang dapat dijalankan untuk Windows: Electron.NET - Memulai
Di sini Anda juga memerlukan Electron.NET CLI. Ketik perintah berikut di folder ASP.NET Core Anda:
electronize build /target win
Ada platform tambahan yang tersedia:
electronize build /target win
electronize build /target osx
electronize build /target linux
Ketiga target "default" tersebut akan menghasilkan paket x64 untuk platform tersebut.
Untuk paket NuGet tertentu atau skenario tertentu Anda mungkin ingin membangun aplikasi x86 murni. Untuk mendukung hal-hal tersebut Anda dapat menentukan runtime .NET Core yang diinginkan, platform elektron, dan arsitektur elektron seperti ini:
electronize build /target custom " win7-x86;win32 " /electron-arch ia32
Hasil akhirnya adalah aplikasi elektron di folder /bin/desktop Anda.
Versi macOS tidak dapat dibuat di mesin Windows karena memerlukan symlink yang tidak didukung di Windows (sesuai masalah Electron ini). Pembuatan macOS dapat diproduksi di mesin Linux atau macOS.
Setelah pembaruan paket Electron.API terbaru, pembaruan ke Electron.CLI terbaru selalu diperlukan. Selain itu, selalu perbarui CLI melalui NuGet:
dotnet tool update ElectronNET.CLI -g
Lihat juga daftar kontributor yang berpartisipasi dalam proyek ini.
Jangan ragu untuk mengirimkan permintaan penarikan jika Anda menemukan bug (untuk melihat daftar masalah aktif, kunjungi bagian Masalah. Pastikan semua komitmen didokumentasikan dengan benar.
Video ini memberikan pengenalan pengembangan Electron.NET: Electron.NET - Berkontribusi untuk Memulai
Repositori ini terdiri dari bagian utama (API & CLI) dan aplikasi ASP.NET Core "taman bermain" miliknya sendiri. Kedua bagian utama menghasilkan paket NuGet lokal, yang berversi 99.0.0. Hal pertama yang Anda perlukan adalah menjalankan salah satu skrip build (.cmd atau .ps1 untuk Windows, .sh untuk macOS/Linux).
Jika Anda mencari proyek demo murni, periksa repositori lainnya.
Masalah dalam bekerja dengan repositori ini adalah NuGet memiliki cache yang cukup agresif, lihat di sini untuk informasi lebih lanjut.
Kami melakukan pekerjaan open source ini di waktu luang kami. Jika Anda ingin kami menginvestasikan lebih banyak waktu untuk hal ini, silakan berdonasi. Donasi dapat digunakan untuk meningkatkan beberapa prioritas masalah. Terima kasih!
Alternatifnya, pertimbangkan untuk menggunakan sponsor GitHub untuk pengelola inti:
Dukungan apa pun dihargai! ?
berlisensi MIT. Lihat LISENSI untuk detailnya.
Menikmati!
Pastikan Anda juga memiliki versi Electron.NET API & CLI 9.31.2 yang baru.
dotnet tool update ElectronNET.CLI -g
Ini sekarang menggunakan pembuat elektron dan konfigurasi yang diperlukan untuk membangun dibuat di file electron.manifest.json (di bagian build). Selain itu, konfigurasi Electron.NET sendiri disimpan (di root).
Harap pastikan file electron.manifest.json Anda memiliki struktur baru berikut:
{
"executable" : " {{executable}} " ,
"splashscreen" : {
"imageFile" : " "
},
"name" : " {{executable}} " ,
"author" : " " ,
"singleInstance" : false ,
"build" : {
"appId" : " com.{{executable}}.app " ,
"productName" : " {{executable}} " ,
"copyright" : " Copyright © 2020 " ,
"buildVersion" : " 1.0.0 " ,
"compression" : " maximum " ,
"directories" : {
"output" : " ../../../bin/Desktop "
},
"extraResources" : [
{
"from" : " ./bin " ,
"to" : " bin " ,
"filter" : [ " **/* " ]
}
],
"files" : [
{
"from" : " ./ElectronHostHook/node_modules " ,
"to" : " ElectronHostHook/node_modules " ,
"filter" : [ " **/* " ]
},
" **/* "
]
}
}
Pada Versi 0.0.9 CLI bukanlah alat global dan perlu didaftarkan seperti ini di .csproj :
< ItemGroup >
< DotNetCliToolReference Include = " ElectronNET.CLI " Version = " 0.0.9 " />
</ ItemGroup >
Setelah Anda mengedit file .csproj , Anda perlu memulihkan paket NuGet dalam Proyek Anda. Jalankan perintah berikut di folder ASP.NET Core Anda:
dotnet restore
Jika Anda masih menggunakan versi ini, Anda perlu menjalankannya seperti ini:
electronize ...
Electron.NET memerlukan integrasi Node.js agar IPC dapat berfungsi. Jika Anda tidak menggunakan fungsionalitas IPC, Anda dapat menonaktifkan integrasi Node.js seperti:
WebPreferences wp = new WebPreferences ( ) ;
wp . NodeIntegration = false ;
BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions
{
WebPreferences = wp
} ;
ElectronNET.API dapat ditambahkan ke wadah DI Anda dalam kelas Startup
. Semua modul yang tersedia di Electron akan ditambahkan sebagai Singletons.
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}