Создавайте кроссплатформенные настольные приложения с помощью .NET 8 и Blazor, ASP.NET Core (Razor Pages, MVC).
Electron.NET — это оболочка собственного приложения Electron со встроенным приложением ASP.NET Core. Через наш IPC-мост Electron.NET мы можем вызывать API-интерфейсы Electron из .NET.
Расширения CLI содержат наш набор инструментов для создания и запуска приложений Electron.NET.
Что ж... существует множество разных подходов к запуску настольного приложения X-plat. Мы подумали, что разработчикам .NET было бы неплохо использовать среду ASP.NET Core и просто встроить ее в довольно надежную среду X-plat под названием Electron. Портирование Electron на .NET не является целью этого проекта, по крайней мере, мы понятия не имеем, как это сделать. Мы просто объединяем ASP.NET Core и Electron.
ЭлектронNET.API | ЭлектронNET.CLI
Текущий CLI Electron.NET собирает двоичные файлы Windows/macOS/Linux. Наш API использует .NET 8, поэтому наша минимальная базовая ОС такая же, как .NET 8.
Также у вас должно быть установлено:
Помимо чата по Gitter и обсуждаемых здесь вопросов, вы также можете использовать StackOverflow с тегом electron.net .
Если вы хотите спонсировать дальнейшее поддержание и развитие этого проекта, посетите раздел пожертвований.
Чтобы активировать и взаимодействовать с «родным» (своего рода собственным...) API Electron, включите пакет ElectronNET.API NuGet в свое приложение ASP.NET Core.
PM > Install-Package ElectronNET.API Вы запускаете Electron.NET с помощью UseElectron WebHostBuilder-Extension и открываете окно 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 ( ) ; Вы запускаете Electron.NET с помощью расширения UseElectron WebHostBuilder.
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
Host . CreateDefaultBuilder ( args )
. ConfigureWebHostDefaults ( webBuilder =>
{
webBuilder . UseElectron ( args ) ;
webBuilder . UseStartup < Startup > ( ) ;
} ) ;Откройте окно Electron в файле 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 initelectronize startТолько первый
electronize startпроисходит медленно. Следующий пойдет быстрее.
Средство наблюдения за файлами включено в версию 8.31.1 Electron.NET. Например, изменение файла может инициировать компиляцию, выполнение теста или развертывание. Окно Electron.NET автоматически обновится, и новые изменения кода станут видны быстрее. Требуется следующая команда CLI Electron.NET:
electronize start /watchТолько первый
electronize startпроисходит медленно. Следующий пойдет быстрее.
Запустите приложение Electron.NET с помощью команды Electron.NET CLI. В Visual Studio присоединитесь к работающему экземпляру приложения. Зайдите в меню «Отладка» и нажмите «Прикрепить к процессу...» . Отсортируйте по названию проекта справа и выберите его в списке.
Полная документация будет следовать. А пока посмотрите исходный код примера приложения:
Демонстрации API Electron.NET
В этом видео на YouTube мы покажем вам, как создать новый проект, использовать API Electron.NET, отладить приложение и создать исполняемое настольное приложение для Windows: Electron.NET — Начало работы
Здесь вам также понадобится интерфейс командной строки Electron.NET. Введите следующую команду в папке 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 нельзя создавать на компьютерах с Windows, поскольку для них требуются символические ссылки, которые не поддерживаются в 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, будут добавлены как синглтоны.
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}