.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을 사용하므로 최소 기본 OS는 .NET 8과 동일합니다.
또한 다음을 설치해야 합니다.
Gitter의 채팅과 여기에서 논의된 문제 외에도 electron.net
태그와 함께 StackOverflow를 사용할 수도 있습니다.
이 프로젝트의 추가 유지 관리 및 개발을 후원하려면 기부 섹션을 참조하세요.
"네이티브"(일종의 네이티브...) 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 폴더 아래에 Electron 앱이 되어야 합니다.
macOS 빌드는 Windows에서 지원되지 않는 심볼릭 링크가 필요하기 때문에(이 Electron 문제에 따라) Windows 컴퓨터에서 생성할 수 없습니다. macOS 빌드는 Linux 또는 macOS 시스템에서 생성될 수 있습니다.
최신 Electron.API 패키지로 업데이트한 후에는 항상 최신 Electron.CLI로 업데이트해야 합니다. 또한 항상 NuGet을 통해 CLI를 업데이트하세요.
dotnet tool update ElectronNET.CLI -g
이 프로젝트에 참여한 기여자 목록도 참조하세요.
버그를 발견하면 언제든지 끌어오기 요청을 제출하세요. 활성 문제 목록을 보려면 문제 섹션을 방문하세요. 모든 커밋이 제대로 문서화되었는지 확인하세요.
이 비디오는 Electron.NET 개발에 대한 소개를 제공합니다: Electron.NET - 시작하기 기여
이 리포지토리는 주요 부분(API 및 CLI)과 자체 "플레이그라운드" ASP.NET Core 애플리케이션으로 구성됩니다. 두 주요 부분 모두 버전이 99.0.0인 로컬 NuGet 패키지를 생성합니다. 가장 먼저 필요한 것은 빌드 스크립트(Windows의 경우 .cmd 또는 .ps1, macOS/Linux의 경우 .sh) 중 하나를 실행하는 것입니다.
순수한 데모 프로젝트를 찾고 있다면 다른 저장소를 확인해 보세요.
이 리포지토리 작업 시 문제는 NuGet에 매우 공격적인 캐시가 있다는 것입니다. 자세한 내용은 여기를 참조하세요.
우리는 여가 시간에 이러한 오픈 소스 작업을 수행합니다. 우리가 이에 더 많은 시간을 투자하길 원하시면 기부해 주세요. 기부는 일부 이슈 우선순위를 높이는 데 사용될 수 있습니다. 감사합니다!
또는 핵심 유지관리자를 위해 GitHub 후원을 사용하는 것을 고려해보세요.
모든 지원에 감사드립니다! ?
MIT 라이센스. 자세한 내용은 라이센스를 참조하세요.
즐기다!
새로운 Electron.NET API 및 CLI 9.31.2 버전도 설치되어 있는지 확인하세요.
dotnet tool update ElectronNET.CLI -g
이제 Electron-Builder를 사용하며 빌드에 필요한 구성은 (빌드 부분의) 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에서는 IPC가 작동하려면 Node.js 통합을 활성화해야 합니다. 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 ( ) ;
}