Erstellen Sie plattformübergreifende Desktop-Apps mit .NET 8 und Blazor, ASP.NET Core (Razor Pages, MVC).
Electron.NET ist ein Wrapper für eine native Electron-Anwendung mit einer eingebetteten ASP.NET Core-Anwendung. Über unsere Electron.NET IPC Bridge können wir Electron APIs aus .NET aufrufen.
Die CLI-Erweiterungen hosten unser Toolset zum Erstellen und Starten von Electron.NET-Anwendungen.
Nun... es gibt viele verschiedene Ansätze, wie man eine X-Plat-Desktop-App zum Laufen bringt. Wir dachten, es wäre schön für .NET-Entwickler, die ASP.NET Core-Umgebung zu verwenden und sie einfach in eine ziemlich robuste X-Plat-Umgebung namens Electron einzubetten. Die Portierung von Electron nach .NET ist kein Ziel dieses Projekts, zumindest haben wir keine Ahnung, wie das geht. Wir kombinieren einfach ASP.NET Core und Electron.
ElectronNET.API | ElectronNET.CLI
Die aktuelle Electron.NET-CLI erstellt Windows/macOS/Linux-Binärdateien. Unsere API verwendet .NET 8, daher ist unser minimales Basisbetriebssystem dasselbe wie .NET 8.
Außerdem sollten Sie Folgendes installiert haben:
Neben dem Chat auf Gitter und den hier besprochenen Themen können Sie auch StackOverflow mit dem Tag electron.net
verwenden.
Wenn Sie die weitere Wartung und Entwicklung dieses Projekts unterstützen möchten, lesen Sie den Spendenbereich.
Um die „native“ (sozusagen native ...) Electron-API zu aktivieren und mit ihr zu kommunizieren, fügen Sie das ElectronNET.API NuGet-Paket in Ihre ASP.NET Core-App ein.
PM > Install-Package ElectronNET.API
Sie starten Electron.NET mit einer UseElectron
WebHostBuilder-Erweiterung und öffnen das Electron-Fenster:
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 ( ) ;
Sie starten Electron.NET mit einer UseElectron
WebHostBuilder-Erweiterung.
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;
Öffnen Sie das Electron-Fenster in der Datei Startup.cs :
public void Configure ( IApplicationBuilder app , IWebHostEnvironment env )
{
//...
Electron . WindowManager . CreateWindowAsync ( ) ;
}
Um die Anwendung zu starten, stellen Sie sicher, dass Sie die „ElectronNET.CLI“-Pakete als globales Tool installiert haben:
dotnet tool install ElectronNET.CLI -g
Beim ersten Mal benötigen Sie eine Electron.NET-Projektinitialisierung. Geben Sie den folgenden Befehl in Ihren ASP.NET Core-Ordner ein:
electronize init
electronize start
Nur der erste
electronize start
ist langsam. Beim nächsten geht es schneller.
Der File Watcher ist in Version 8.31.1 von Electron.NET enthalten. Beispielsweise kann eine Dateiänderung eine Kompilierung, Testausführung oder Bereitstellung auslösen. Das Electron.NET-Fenster wird automatisch aktualisiert und neue Codeänderungen werden schneller sichtbar. Der folgende Electron.NET CLI-Befehl ist erforderlich:
electronize start /watch
Nur der erste
electronize start
ist langsam. Beim nächsten geht es schneller.
Starten Sie Ihre Electron.NET-Anwendung mit dem Electron.NET-CLI-Befehl. Hängen Sie in Visual Studio eine Verbindung zu Ihrer laufenden Anwendungsinstanz her. Gehen Sie in das Debug -Menü und klicken Sie auf An Prozess anhängen... . Sortieren Sie rechts nach Ihrem Projektnamen und wählen Sie es in der Liste aus.
Eine vollständige Dokumentation folgt. Schauen Sie sich bis dahin den Quellcode der Beispielanwendung an:
Electron.NET-API-Demos
In diesem YouTube-Video zeigen wir Ihnen, wie Sie ein neues Projekt erstellen, die Electron.NET-API verwenden, eine Anwendung debuggen und eine ausführbare Desktop-App für Windows erstellen können: Electron.NET – Erste Schritte
Auch hier benötigen Sie die Electron.NET CLI. Geben Sie den folgenden Befehl in Ihren ASP.NET Core-Ordner ein:
electronize build /target win
Es stehen weitere Plattformen zur Verfügung:
electronize build /target win
electronize build /target osx
electronize build /target linux
Diese drei „Standard“-Ziele erzeugen x64-Pakete für diese Plattformen.
Für bestimmte NuGet-Pakete oder bestimmte Szenarien möchten Sie möglicherweise eine reine x86-Anwendung erstellen. Um diese Dinge zu unterstützen, können Sie die gewünschte .NET Core-Laufzeit, die Elektronenplattform und die Elektronenarchitektur wie folgt definieren:
electronize build /target custom " win7-x86;win32 " /electron-arch ia32
Das Endergebnis sollte eine Electron-App in Ihrem Ordner /bin/desktop sein.
macOS-Builds können nicht auf Windows-Computern erstellt werden, da sie Symlinks erfordern, die unter Windows nicht unterstützt werden (gemäß diesem Electron-Problem). macOS-Builds können entweder auf Linux- oder macOS-Maschinen erstellt werden.
Nach einem Update auf das neueste Electron.API-Paket ist immer ein Update auf die neueste Electron.CLI erforderlich. Aktualisieren Sie außerdem die CLI immer über NuGet:
dotnet tool update ElectronNET.CLI -g
Siehe auch die Liste der Mitwirkenden, die an diesem Projekt teilgenommen haben.
Wenn Sie Fehler finden, können Sie gerne eine Pull-Anfrage einreichen (eine Liste der aktiven Probleme finden Sie im Abschnitt „Probleme“). Bitte stellen Sie sicher, dass alle Commits ordnungsgemäß dokumentiert sind.
Dieses Video bietet eine Einführung in die Entwicklung für Electron.NET: Electron.NET – Contributing Getting Started
Dieses Repository besteht aus den Hauptteilen (API und CLI) und einer eigenen „Spielwiese“ der ASP.NET Core-Anwendung. Beide Hauptteile erzeugen lokale NuGet-Pakete, die mit 99.0.0 versioniert sind. Als Erstes müssen Sie eines der Build-Skripte ausführen (.cmd oder .ps1 für Windows, .sh für macOS/Linux).
Wenn Sie nach reinen Demoprojekten suchen, schauen Sie sich die anderen Repositories an.
Das Problem bei der Arbeit mit diesem Repository besteht darin, dass NuGet über einen ziemlich aggressiven Cache verfügt. Weitere Informationen finden Sie hier.
Wir machen diese Open-Source-Arbeit in unserer Freizeit. Wenn Sie möchten, dass wir mehr Zeit dafür investieren, spenden Sie bitte. Durch eine Spende kann die Priorität eines bestimmten Problems erhöht werden. Danke schön!
Alternativ können Sie die Nutzung eines GitHub-Sponsorings für die Hauptbetreuer in Betracht ziehen:
Jede Unterstützung wird geschätzt! ?
MIT-lizenziert. Weitere Informationen finden Sie unter LIZENZ.
Genießen!
Stellen Sie sicher, dass Sie auch über die neue Electron.NET API & CLI 9.31.2-Version verfügen.
dotnet tool update ElectronNET.CLI -g
Dies verwendet jetzt den Electron-Builder und die für den Build erforderliche Konfiguration wird in der Datei Electron.manifest.json (im Build-Teil) vorgenommen. Darüber hinaus werden eigene Electron.NET-Konfigurationen gespeichert (im Root).
Bitte stellen Sie sicher, dass Ihre Datei „electron.manifest.json“ die folgende neue Struktur hat:
{
"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" : [ " **/* " ]
},
" **/* "
]
}
}
In der Version 0.0.9 war die CLI kein globales Tool und musste wie folgt in der .csproj registriert werden:
< ItemGroup >
< DotNetCliToolReference Include = " ElectronNET.CLI " Version = " 0.0.9 " />
</ ItemGroup >
Nachdem Sie die .csproj- Datei bearbeitet haben, müssen Sie Ihre NuGet-Pakete in Ihrem Projekt wiederherstellen. Führen Sie den folgenden Befehl in Ihrem ASP.NET Core-Ordner aus:
dotnet restore
Wenn Sie diese Version noch verwenden, müssen Sie sie wie folgt aufrufen:
electronize ...
Für Electron.NET muss die Node.js-Integration aktiviert sein, damit IPC funktioniert. Wenn Sie die IPC-Funktionalität nicht nutzen, können Sie die Node.js-Integration wie folgt deaktivieren:
WebPreferences wp = new WebPreferences ( ) ;
wp . NodeIntegration = false ;
BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions
{
WebPreferences = wp
} ;
ElectronNET.API kann Ihrem DI-Container innerhalb der Startup
-Klasse hinzugefügt werden. Alle in Electron verfügbaren Module werden als Singletons hinzugefügt.
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}