Cree aplicaciones de escritorio multiplataforma con .NET 8 y Blazor, ASP.NET Core (Razor Pages, MVC).
Electron.NET es un contenedor para una aplicación nativa de Electron con una aplicación ASP.NET Core integrada. A través de nuestro puente Electron.NET IPC podemos invocar las API de Electron desde .NET.
Las extensiones CLI alojan nuestro conjunto de herramientas para crear e iniciar aplicaciones Electron.NET.
Bueno... hay muchos enfoques diferentes sobre cómo ejecutar una aplicación de escritorio X-plat. Pensamos que sería bueno que los desarrolladores de .NET usaran el entorno ASP.NET Core y simplemente lo integraran dentro de un entorno X-plat bastante robusto llamado Electron. Portar Electron a .NET no es el objetivo de este proyecto, al menos no tenemos idea de cómo hacerlo. Simplemente combinamos ASP.NET Core y Electron.
ElectronNET.API | ElectronNET.CLI
La CLI actual de Electron.NET crea archivos binarios de Windows/macOS/Linux. Nuestra API utiliza .NET 8, por lo que nuestro sistema operativo base mínimo es el mismo que .NET 8.
También deberías haber instalado:
Además del chat en Gitter y los temas discutidos aquí, también puedes usar StackOverflow con la etiqueta electron.net
.
Si desea patrocinar el mantenimiento y desarrollo adicional de este proyecto, consulte la sección de donaciones.
Para activar y comunicarse con la API de Electron "nativa" (más o menos nativa...), incluya el paquete ElectronNET.API NuGet en su aplicación ASP.NET Core.
PM > Install-Package ElectronNET.API
Inicia Electron.NET con una extensión UseElectron
WebHostBuilder y abre la ventana de 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 ( ) ;
Inicia Electron.NET con una extensión UseElectron
WebHostBuilder.
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;
Abra la ventana electrónica en el archivo Startup.cs :
public void Configure ( IApplicationBuilder app , IWebHostEnvironment env )
{
//...
Electron . WindowManager . CreateWindowAsync ( ) ;
}
Para iniciar la aplicación asegúrese de haber instalado los paquetes "ElectronNET.CLI" como herramienta global:
dotnet tool install ElectronNET.CLI -g
La primera vez, necesita una inicialización del proyecto Electron.NET. Escriba el siguiente comando en su carpeta ASP.NET Core:
electronize init
electronize start
Sólo el primer
electronize start
es lento. El próximo irá más rápido.
El observador de archivos se incluye con la versión 8.31.1 de Electron.NET. Por ejemplo, un cambio de archivo puede desencadenar la compilación, la ejecución de pruebas o la implementación. La ventana de Electron.NET se actualizará automáticamente y los nuevos cambios de código serán visibles más rápidamente. Se requiere el siguiente comando CLI de Electron.NET:
electronize start /watch
Sólo el primer
electronize start
es lento. El próximo irá más rápido.
Inicie su aplicación Electron.NET con el comando CLI de Electron.NET. En Visual Studio, adjunte a la instancia de su aplicación en ejecución. Vaya al menú Depurar y haga clic en Adjuntar al proceso.... Ordene por nombre de proyecto a la derecha y selecciónelo en la lista.
Le seguirá una documentación completa. Hasta entonces, eche un vistazo al código fuente de la aplicación de muestra:
Demostraciones de la API de Electron.NET
En este video de YouTube, le mostramos cómo puede crear un nuevo proyecto, usar la API de Electron.NET, depurar una aplicación y crear una aplicación de escritorio ejecutable para Windows: Electron.NET - Primeros pasos
Aquí también necesita la CLI de Electron.NET. Escriba el siguiente comando en su carpeta ASP.NET Core:
electronize build /target win
Hay plataformas adicionales disponibles:
electronize build /target win
electronize build /target osx
electronize build /target linux
Esos tres objetivos "predeterminados" producirán paquetes x64 para esas plataformas.
Para ciertos paquetes NuGet o ciertos escenarios, es posible que desee crear una aplicación x86 pura. Para admitir esas cosas, puede definir el tiempo de ejecución de .NET Core deseado, la plataforma electrónica y la arquitectura electrónica de esta manera:
electronize build /target custom " win7-x86;win32 " /electron-arch ia32
El resultado final debería ser una aplicación electrónica en su carpeta /bin/desktop .
Las compilaciones de macOS no se pueden crear en máquinas con Windows porque requieren enlaces simbólicos que no son compatibles con Windows (según este problema de Electron). Las compilaciones de macOS se pueden producir en máquinas Linux o macOS.
Después de una actualización al último paquete Electron.API, siempre se requiere una actualización al último paquete Electron.CLI. Además, actualice siempre la CLI a través de NuGet:
dotnet tool update ElectronNET.CLI -g
Vea también la lista de contribuyentes que participaron en este proyecto.
No dude en enviar una solicitud de extracción si encuentra algún error (para ver una lista de problemas activos, visite la sección Problemas. Asegúrese de que todas las confirmaciones estén documentadas adecuadamente.
Este vídeo proporciona una introducción al desarrollo de Electron.NET: Electron.NET - Contribución de introducción
Este repositorio consta de las partes principales (API y CLI) y su propia aplicación ASP.NET Core "patio de juegos". Ambas partes principales producen paquetes NuGet locales, que tienen la versión 99.0.0. Lo primero que necesitará es ejecutar uno de los scripts de compilación (.cmd o .ps1 para Windows, .sh para macOS/Linux).
Si busca proyectos de demostración puros, consulte los otros repositorios.
El problema al trabajar con este repositorio es que NuGet tiene un caché bastante agresivo; consulte aquí para obtener más información.
Hacemos este trabajo de código abierto en nuestro tiempo libre. Si desea que invirtamos más tiempo en ello, haga una donación. La donación se puede utilizar para aumentar la prioridad de algún tema. ¡Gracias!
Alternativamente, considere utilizar un patrocinio de GitHub para los mantenedores principales:
¡Se agradece cualquier apoyo! ?
Con licencia del MIT. Consulte LICENCIA para obtener más detalles.
¡Disfrutar!
Asegúrese de tener también la nueva versión Electron.NET API & CLI 9.31.2.
dotnet tool update ElectronNET.CLI -g
Esto ahora usa electron-builder y la configuración necesaria para compilar se realiza en el archivo electron.manifest.json (en la parte de compilación). Además, se almacenan las configuraciones propias de Electron.NET (en la raíz).
Asegúrese de que su archivo electron.manifest.json tenga la siguiente estructura nueva:
{
"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" : [ " **/* " ]
},
" **/* "
]
}
}
En la versión 0.0.9, la CLI no era una herramienta global y debía registrarse así en .csproj :
< ItemGroup >
< DotNetCliToolReference Include = " ElectronNET.CLI " Version = " 0.0.9 " />
</ ItemGroup >
Después de editar el archivo .csproj , debe restaurar sus paquetes NuGet dentro de su Proyecto. Ejecute el siguiente comando en su carpeta ASP.NET Core:
dotnet restore
Si todavía usas esta versión necesitarás invocarla así:
electronize ...
Electron.NET requiere que la integración de Node.js esté habilitada para que IPC funcione. Si no está utilizando la funcionalidad IPC, puede desactivar la integración de Node.js de esta manera:
WebPreferences wp = new WebPreferences ( ) ;
wp . NodeIntegration = false ;
BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions
{
WebPreferences = wp
} ;
ElectronNET.API se puede agregar a su contenedor DI dentro de la clase Startup
. Todos los módulos disponibles en Electron se agregarán como Singletons.
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}