Crie aplicativos de desktop multiplataforma com .NET 8 e Blazor, ASP.NET Core (Razor Pages, MVC).
Electron.NET é um wrapper em torno de um aplicativo Electron nativo com um aplicativo ASP.NET Core incorporado. Através de nossa ponte Electron.NET IPC, podemos invocar APIs Electron do .NET.
As extensões CLI hospedam nosso conjunto de ferramentas para construir e iniciar aplicativos Electron.NET.
Bem... existem muitas abordagens diferentes para executar um aplicativo de desktop X-plat. Achamos que seria bom para os desenvolvedores .NET usar o ambiente ASP.NET Core e apenas incorporá-lo em um ambiente X-plat bastante robusto chamado Electron. Portar o Electron para .NET não é o objetivo deste projeto, pelo menos não temos ideia de como fazer isso. Acabamos de combinar ASP.NET Core e Electron.
ElectronNET.API | ElectronNET.CLI
A CLI Electron.NET atual cria binários Windows/macOS/Linux. Nossa API usa .NET 8, portanto, nosso sistema operacional base mínimo é igual ao .NET 8.
Além disso, você deve ter instalado:
Além do chat no Gitter e dos assuntos discutidos aqui você também pode usar o StackOverflow com a tag electron.net .
Se você deseja patrocinar a manutenção e desenvolvimento deste projeto, consulte a seção de doações.
Para ativar e se comunicar com a API Electron "nativa" (mais ou menos nativa...), inclua o pacote ElectronNET.API NuGet em seu aplicativo ASP.NET Core.
PM > Install-Package ElectronNET.API Você inicia o Electron.NET com uma extensão UseElectron WebHostBuilder e abre a janela 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 ( ) ; Você inicia o Electron.NET com uma extensão UseElectron WebHostBuilder.
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;Abra a janela Electron no arquivo Startup.cs :
public void Configure ( IApplicationBuilder app , IWebHostEnvironment env )
{
//...
Electron . WindowManager . CreateWindowAsync ( ) ;
} Para iniciar a aplicação certifique-se de ter instalado os pacotes "ElectronNET.CLI" como ferramenta global:
dotnet tool install ElectronNET.CLI -gNa primeira vez, você precisa de uma inicialização do projeto Electron.NET. Digite o seguinte comando na pasta ASP.NET Core:
electronize initelectronize startApenas o primeiro
electronize starté lento. O próximo será mais rápido.
O inspetor de arquivos está incluído na versão 8.31.1 do Electron.NET. Por exemplo, uma alteração de arquivo pode acionar compilação, execução de teste ou implantação. A janela Electron.NET será atualizada automaticamente e novas alterações de código ficarão visíveis mais rapidamente. O seguinte comando CLI do Electron.NET é necessário:
electronize start /watchApenas o primeiro
electronize starté lento. O próximo será mais rápido.
Inicie seu aplicativo Electron.NET com o comando Electron.NET CLI. No Visual Studio, anexe à instância do aplicativo em execução. Vá no menu Debug e clique em Attach to Process... . Classifique pelo nome do seu projeto à direita e selecione-o na lista.
Uma documentação completa seguirá. Até então, dê uma olhada no código-fonte do aplicativo de exemplo:
Demonstrações da API Electron.NET
Neste vídeo do YouTube, mostramos como você pode criar um novo projeto, usar a API Electron.NET, depurar um aplicativo e construir um aplicativo de desktop executável para Windows: Electron.NET - Primeiros passos
Aqui você também precisa da CLI Electron.NET. Digite o seguinte comando na pasta ASP.NET Core:
electronize build /target winExistem plataformas adicionais disponíveis:
electronize build /target win
electronize build /target osx
electronize build /target linuxEsses três alvos “padrão” produzirão pacotes x64 para essas plataformas.
Para determinados pacotes NuGet ou determinados cenários, talvez você queira criar um aplicativo x86 puro. Para oferecer suporte a essas coisas, você pode definir o tempo de execução desejado do .NET Core, a plataforma eletrônica e a arquitetura eletrônica assim:
electronize build /target custom " win7-x86;win32 " /electron-arch ia32 O resultado final deve ser um aplicativo eletrônico na pasta /bin/desktop .
As compilações do macOS não podem ser criadas em máquinas Windows porque exigem links simbólicos que não são suportados no Windows (de acordo com este problema do Electron). As compilações do macOS podem ser produzidas em máquinas Linux ou macOS.
Após uma atualização para o pacote Electron.API mais recente, uma atualização para o Electron.CLI mais recente é sempre necessária. Além disso, sempre atualize a CLI via NuGet:
dotnet tool update ElectronNET.CLI -gVeja também a lista de colaboradores que participaram deste projeto.
Sinta-se à vontade para enviar uma solicitação pull se encontrar algum bug (para ver uma lista de problemas ativos, visite a seção Problemas. Certifique-se de que todos os commits estejam devidamente documentados.
Este vídeo fornece uma introdução ao desenvolvimento para Electron.NET: Electron.NET - Contributing Getting Started
Este repositório consiste nas partes principais (API e CLI) e em seu próprio aplicativo ASP.NET Core "playground". Ambas as partes principais produzem pacotes NuGet locais, com versão 99.0.0. A primeira coisa que você precisa é executar um dos scripts de construção (.cmd ou .ps1 para Windows, o .sh para macOS/Linux).
Se você procura projetos de demonstração puros, verifique os outros repositórios.
O problema de trabalhar com este repositório é que o NuGet possui um cache bastante agressivo, veja aqui para mais informações.
Fazemos esse trabalho de código aberto em nosso tempo livre. Se você quiser que invistamos mais tempo nisso, por favor, doe. A doação pode ser usada para aumentar a prioridade de alguma questão. Obrigado!
Alternativamente, considere usar um patrocínio do GitHub para os principais mantenedores:
Qualquer apoio apreciado! ?
Licenciado pelo MIT. Consulte LICENÇA para obter detalhes.
Aproveitar!
Certifique-se de ter também a nova versão Electron.NET API e CLI 9.31.2.
dotnet tool update ElectronNET.CLI -gEste agora utiliza o electron-builder e a configuração necessária para construir é feita no arquivo electron.manifest.json (na parte de build). Além disso, as configurações próprias do Electron.NET são armazenadas (na raiz).
Certifique-se de que seu arquivo electron.manifest.json tenha a seguinte nova estrutura:
{
"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" : [ " **/* " ]
},
" **/* "
]
}
}Na versão 0.0.9 a CLI não era uma ferramenta global e precisava ser registrada assim no .csproj :
< ItemGroup >
< DotNetCliToolReference Include = " ElectronNET.CLI " Version = " 0.0.9 " />
</ ItemGroup >Depois de editar o arquivo .csproj , você precisará restaurar os pacotes NuGet no seu projeto. Execute o seguinte comando na pasta ASP.NET Core:
dotnet restoreSe você ainda usa esta versão, precisará invocá-la assim:
electronize ...Electron.NET requer que a integração do Node.js esteja habilitada para que o IPC funcione. Se você não estiver usando a funcionalidade IPC, você pode desabilitar a integração do Node.js da seguinte forma:
WebPreferences wp = new WebPreferences ( ) ;
wp . NodeIntegration = false ;
BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions
{
WebPreferences = wp
} ; ElectronNET.API pode ser adicionado ao seu contêiner DI na classe Startup . Todos os módulos disponíveis no Electron serão adicionados como Singletons.
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}