使用 .NET 8 和 Blazor、ASP.NET Core(Razor Pages、MVC)建立跨平台桌面應用程式。
Electron.NET 是具有嵌入式 ASP.NET Core 應用程式的原生 Electron 應用程式的包裝器。透過我們的 Electron.NET IPC 橋,我們可以從 .NET 呼叫 Electron API。
CLI 擴充功能託管我們用於建立和啟動 Electron.NET 應用程式的工具集。
嗯...有很多不同的方法來運行 X-plat 桌面應用程式。我們認為 .NET 開發人員使用 ASP.NET Core 環境並將其嵌入到一個名為 Electron 的非常強大的 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 並與其進行通信,請在 ASP.NET Core 應用程式中包含 ElectronNET.API NuGet 套件。
PM > Install-Package ElectronNET.API
您使用UseElectron
WebHostBuilder-Extension 啟動 Electron.NET 並開啟 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 ( ) ;
您可以使用UseElectron
WebHostBuilder-Extension 啟動 Electron.NET。
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;
在Startup.cs檔案中開啟 Electron 視窗:
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 CLI 指令啟動 Electron.NET 應用程式。在 Visual Studio 中附加到正在執行的應用程式實例。進入「偵錯」功能表並按一下「附加到進程...」 。按右側的項目名稱排序,然後在清單中選擇它。
隨後將提供完整的文件。在此之前,請查看範例應用程式的原始程式碼:
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資料夾下的一個電子應用程式。
無法在 Windows 電腦上建立 macOS 版本,因為它們需要 Windows 上不支援的符號連結(根據此 Electron 問題)。 macOS 版本可以在 Linux 或 macOS 電腦上產生。
更新到最新的 Electron.API 套件後,始終需要更新至最新的 Electron.CLI。此外,請始終透過 NuGet 更新 CLI:
dotnet tool update ElectronNET.CLI -g
另請參閱參與專案的貢獻者清單。
如果您發現任何錯誤,請隨時提交拉取請求(要查看活動問題列表,請訪問「問題」部分。請確保所有提交均已正確記錄。
影片介紹了 Electron.NET 的開發:Electron.NET - 貢獻入門
該儲存庫由主要部分(API 和 CLI)及其自己的「遊樂場」ASP.NET Core 應用程式組成。兩個主要部分都會產生本地 NuGet 包,其版本號為 99.0.0。您需要做的第一件事是執行一個建置腳本(Windows 為 .cmd 或 .ps1,macOS/Linux 為 .sh)。
如果您尋找純演示項目,請查看其他儲存庫。
使用此儲存庫的問題是,NuGet 有一個相當激進的緩存,請參閱此處以獲取更多資訊。
我們在空閒時間做這項開源工作。如果您希望我們投入更多時間,請捐款。捐贈可用於提高某些問題的優先順序。謝謝你!
或者,考慮為核心維護者使用 GitHub 贊助:
任何支持表示讚賞! ?
麻省理工學院許可。有關詳細信息,請參閱許可證。
享受!
確保您也擁有新的 Electron.NET API 和 CLI 9.31.2 版本。
dotnet tool update ElectronNET.CLI -g
現在使用 Electron-builder,並且建立所需的配置是在electro.manifest.json檔案(在建置部分)中進行的。此外,也儲存了自己的 Electron.NET 配置(在根目錄上)。
請確保您的electro.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 可以加入到Startup
類別中的 DI 容器中。 Electron 中可用的所有模組都將作為單例添加。
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}