สร้างแอปเดสก์ท็อปข้ามแพลตฟอร์มด้วย .NET 8 และ Blazor, ASP.NET Core (Razor Pages, MVC)
Electron.NET เป็น wrapper รอบแอปพลิเคชัน Electron ดั้งเดิมที่มีแอปพลิเคชัน ASP.NET Core แบบฝัง ด้วยสะพาน Electron.NET IPC ของเรา เราสามารถเรียกใช้ Electron API จาก .NET ได้
ส่วนขยาย CLI เป็นโฮสต์ชุดเครื่องมือของเราเพื่อสร้างและเริ่มต้นแอปพลิเคชัน Electron.NET
มีหลายวิธีในการทำให้แอปเดสก์ท็อป X-plat ทำงาน เราคิดว่ามันคงจะดีสำหรับ .NET devs ที่จะใช้สภาพแวดล้อม ASP.NET Core และเพิ่งฝังมันไว้ภายในสภาพแวดล้อม X-plat ที่แข็งแกร่งซึ่งเรียกว่า Electron การย้ายอิเล็กตรอนไปยัง .NET ไม่ใช่เป้าหมายของโปรเจ็กต์นี้ อย่างน้อยเราก็ไม่รู้ว่าจะต้องทำอย่างไร เราเพิ่งรวม ASP.NET Core & Electron
ElectronNET.API | ElectronNET.CLI
Electron.NET CLI ปัจจุบันสร้างไบนารี Windows/macOS/Linux API ของเราใช้ .NET 8 ดังนั้นระบบปฏิบัติการพื้นฐานขั้นต่ำของเราจึงเหมือนกับ .NET 8
คุณควรจะติดตั้งด้วย:
นอกจากการแชทบน Gitter และปัญหาที่กล่าวถึงในที่นี้ คุณยังสามารถใช้ StackOverflow กับแท็ก electron.net
ได้
หากคุณต้องการสนับสนุนการบำรุงรักษาและพัฒนาโครงการนี้เพิ่มเติม โปรดดูส่วนการบริจาค
เพื่อเปิดใช้งานและสื่อสารกับ "เนทีฟ" (เรียงลำดับจากเนทีฟ...) Electron API จะรวมแพ็คเกจ ElectronNET.API NuGet ในแอป ASP.NET Core ของคุณ
PM > Install-Package ElectronNET.API
คุณเริ่มต้น Electron.NET ด้วย UseElectron
WebHostBuilder-Extension และเปิดหน้าต่างอิเล็กตรอน:
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 ( ) ;
คุณเริ่มต้น Electron.NET ด้วย UseElectron
WebHostBuilder-Extension
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;
เปิดหน้าต่างอิเล็กตรอนในไฟล์ Startup.cs :
public void Configure ( IApplicationBuilder app , IWebHostEnvironment env )
{
//...
Electron . WindowManager . CreateWindowAsync ( ) ;
}
ในการเริ่มต้นแอปพลิเคชันตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแพ็คเกจ "ElectronNET.CLI" เป็นเครื่องมือระดับโลก:
dotnet tool install ElectronNET.CLI -g
ในครั้งแรก คุณต้องมีการเริ่มต้นโปรเจ็กต์ Electron.NET พิมพ์คำสั่งต่อไปนี้ในโฟลเดอร์ ASP.NET Core ของคุณ:
electronize init
electronize start
เฉพาะ
electronize start
ครั้งแรกเท่านั้นที่ช้า ต่อไปจะดำเนินไปเร็วขึ้น
โปรแกรมดูไฟล์รวมอยู่ใน Electron.NET เวอร์ชัน 8.31.1 ตัวอย่างเช่น การเปลี่ยนแปลงไฟล์สามารถทริกเกอร์การคอมไพล์ ทดสอบการดำเนินการ หรือการปรับใช้ หน้าต่าง Electron.NET จะรีเฟรชโดยอัตโนมัติ และการเปลี่ยนแปลงโค้ดใหม่จะมองเห็นได้รวดเร็วยิ่งขึ้น ต้องใช้คำสั่ง Electron.NET CLI ต่อไปนี้:
electronize start /watch
เฉพาะ
electronize start
ครั้งแรกเท่านั้นที่ช้า ต่อไปจะดำเนินไปเร็วขึ้น
เริ่มแอปพลิเคชัน Electron.NET ของคุณด้วยคำสั่ง Electron.NET CLI ใน Visual Studio แนบไปกับอินสแตนซ์แอปพลิเคชันที่ทำงานอยู่ของคุณ ไปที่เมนู Debug และคลิกที่ Attach to Process... จัดเรียงตามชื่อโครงการของคุณทางด้านขวาและเลือกจากรายการ
เอกสารฉบับสมบูรณ์จะตามมา ก่อนหน้านั้นให้ดูซอร์สโค้ดของแอปพลิเคชันตัวอย่าง:
การสาธิต Electron.NET API
ในวิดีโอ YouTube นี้ เราจะแสดงให้คุณเห็นว่าคุณสามารถสร้างโปรเจ็กต์ใหม่ ใช้ Electron.NET API ดีบักแอปพลิเคชัน และสร้างแอปเดสก์ท็อปที่ปฏิบัติการได้สำหรับ Windows ได้อย่างไร: Electron.NET - เริ่มต้นใช้งาน
ที่นี่คุณต้องมี Electron.NET CLI เช่นกัน พิมพ์คำสั่งต่อไปนี้ในโฟลเดอร์ ASP.NET Core ของคุณ:
electronize build /target win
มีแพลตฟอร์มเพิ่มเติมให้เลือก:
electronize build /target win
electronize build /target osx
electronize build /target linux
เป้าหมาย "เริ่มต้น" ทั้งสามนั้นจะสร้างแพ็คเกจ x64 สำหรับแพลตฟอร์มเหล่านั้น
สำหรับแพ็คเกจ NuGet บางรายการหรือบางสถานการณ์ คุณอาจต้องการสร้างแอปพลิเคชัน x86 ล้วนๆ เพื่อสนับสนุนสิ่งเหล่านั้น คุณสามารถกำหนดรันไทม์ .NET Core ที่ต้องการ แพลตฟอร์มอิเล็กตรอน และสถาปัตยกรรมอิเล็กตรอนดังนี้:
electronize build /target custom " win7-x86;win32 " /electron-arch ia32
ผลลัพธ์ที่ได้ควรเป็นแอปอิเล็กตรอนภายใต้โฟลเดอร์ /bin/desktop ของคุณ
ไม่สามารถสร้าง macOS build บนเครื่อง Windows ได้เนื่องจากต้องใช้ symlink ที่ไม่รองรับบน Windows (ตามปัญหา Electron นี้) บิลด์ macOS สามารถสร้างได้บนเครื่อง Linux หรือ macOS
หลังจากอัปเดตเป็นแพ็คเกจ Electron.API ล่าสุด จำเป็นต้องอัปเดตเป็น Electron.CLI ล่าสุดเสมอ นอกจากนี้ ให้อัปเดต CLI ผ่าน NuGet เสมอ:
dotnet tool update ElectronNET.CLI -g
ดูรายชื่อผู้ร่วมให้ข้อมูลที่เข้าร่วมโครงการนี้ด้วย
อย่าลังเลที่จะส่งคำขอดึงข้อมูลหากคุณพบข้อบกพร่องใดๆ (หากต้องการดูรายการปัญหาที่ใช้งานอยู่ โปรดไปที่ส่วนปัญหา โปรดตรวจสอบให้แน่ใจว่าการคอมมิตทั้งหมดได้รับการบันทึกไว้อย่างถูกต้อง
วิดีโอนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับการพัฒนาสำหรับ Electron.NET: Electron.NET - การเริ่มต้นใช้งาน
พื้นที่เก็บข้อมูลนี้ประกอบด้วยส่วนหลัก (API & CLI) และเป็นแอปพลิเคชัน ASP.NET Core "สนามเด็กเล่น" ของตัวเอง ส่วนหลักทั้งสองส่วนสร้างแพ็คเกจ NuGet ท้องถิ่นซึ่งมีเวอร์ชัน 99.0.0 สิ่งแรกที่คุณต้องมีคือเรียกใช้สคริปต์บิลด์ตัวใดตัวหนึ่ง (.cmd หรือ .ps1 สำหรับ Windows, .sh สำหรับ macOS/Linux)
หากคุณกำลังมองหา โปรเจ็กต์สาธิต ล้วนๆ ให้ชำระเงินที่พื้นที่เก็บข้อมูลอื่นๆ
ปัญหาในการทำงานกับพื้นที่เก็บข้อมูลนี้คือ NuGet มีแคชที่ค่อนข้างรุนแรง ดูข้อมูลเพิ่มเติมที่นี่
เราทำงานโอเพ่นซอร์สนี้ในเวลาว่าง หากคุณต้องการให้เราลงทุนเวลามากกว่านี้ โปรดบริจาค การบริจาคสามารถใช้เพื่อเพิ่มลำดับความสำคัญของปัญหาบางอย่างได้ ขอบคุณ!
หรือพิจารณาใช้การสนับสนุน GitHub สำหรับผู้ดูแลหลัก:
การสนับสนุนใด ๆ ที่ชื่นชม! -
ได้รับใบอนุญาตจาก MIT ดูใบอนุญาตสำหรับรายละเอียด
สนุก!
ตรวจสอบให้แน่ใจว่าคุณมี Electron.NET API และ CLI เวอร์ชัน 9.31.2 ใหม่ด้วย
dotnet tool update ElectronNET.CLI -g
ตอนนี้ใช้ตัวสร้างอิเล็กตรอนและการกำหนดค่าที่จำเป็นในการสร้างถูกสร้างขึ้นในไฟล์ Electron.manifest.json (ในส่วนการสร้าง) นอกจากนี้ การกำหนดค่า Electron.NET ของตัวเองจะถูกจัดเก็บไว้ (บนรูท)
โปรดตรวจสอบให้แน่ใจว่าไฟล์ Electron.manifest.json ของคุณมีโครงสร้างใหม่ดังต่อไปนี้:
{
"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" : [ " **/* " ]
},
" **/* "
]
}
}
ในเวอร์ชัน 0.0.9 CLI ไม่ใช่เครื่องมือระดับโลกและจำเป็นต้องลงทะเบียนเช่นนี้ใน .csproj :
< ItemGroup >
< DotNetCliToolReference Include = " ElectronNET.CLI " Version = " 0.0.9 " />
</ ItemGroup >
หลังจากที่คุณแก้ไขไฟล์ .csproj แล้ว คุณจะต้องกู้คืนแพ็คเกจ NuGet ภายในโปรเจ็กต์ของคุณ เรียกใช้คำสั่งต่อไปนี้ในโฟลเดอร์ ASP.NET Core ของคุณ:
dotnet restore
หากคุณยังคงใช้เวอร์ชันนี้ คุณจะต้องเรียกใช้เวอร์ชันนี้:
electronize ...
Electron.NET จำเป็นต้องเปิดใช้งานการรวม Node.js เพื่อให้ IPC ทำงานได้ หากคุณไม่ได้ใช้ฟังก์ชัน IPC คุณสามารถปิดใช้งานการรวม Node.js ได้ดังนี้:
WebPreferences wp = new WebPreferences ( ) ;
wp . NodeIntegration = false ;
BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions
{
WebPreferences = wp
} ;
คุณสามารถเพิ่ม ElectronNET.API ลงในคอนเทนเนอร์ DI ของคุณภายในคลาส Startup
โมดูลทั้งหมดที่มีอยู่ใน Electron จะถูกเพิ่มเป็น Singletons
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}