使用 .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,因此我们的最低基本操作系统与 .NET 8 相同。
您还应该安装:
除了 Gitter 上的聊天和此处讨论的问题之外,您还可以使用 StackOverflow 和标签electron.net 。
如果您想赞助该项目的进一步维护和开发,请参阅捐赠部分。
要激活“本机”(某种本机...)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 initelectronize 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文件夹下的一个电子应用程序。
无法在 Windows 计算机上创建 macOS 版本,因为它们需要 Windows 上不支持的符号链接(根据此 Electron 问题)。 macOS 版本可以在 Linux 或 macOS 计算机上生成。
更新到最新的 Electron.API 包后,始终需要更新到最新的 Electron.CLI。此外,请始终通过 NuGet 更新 CLI:
dotnet tool update ElectronNET.CLI -g另请参阅参与该项目的贡献者列表。
如果您发现任何错误,请随时提交拉取请求(要查看活动问题列表,请访问“问题”部分。请确保所有提交均已正确记录。
该视频介绍了 Electron.NET 的开发:Electron.NET - 贡献入门
该存储库由主要部分(API 和 CLI)及其自己的“游乐场”ASP.NET Core 应用程序组成。两个主要部分都会生成本地 NuGet 包,其版本号为 99.0.0。您需要做的第一件事是运行一个构建脚本(Windows 为 .cmd 或 .ps1,macOS/Linux 为 .sh)。
如果您寻找纯演示项目,请查看其他存储库。
使用此存储库的问题是,NuGet 有一个相当激进的缓存,请参阅此处以获取更多信息。
我们在空闲时间做这项开源工作。如果您希望我们投入更多时间,请捐赠。捐赠可用于提高某些问题的优先级。谢谢你!
或者,考虑为核心维护者使用 GitHub 赞助:
任何支持表示赞赏! ?
麻省理工学院许可。有关详细信息,请参阅许可证。
享受!
确保您还拥有新的 Electron.NET API 和 CLI 9.31.2 版本。
dotnet tool update ElectronNET.CLI -g现在使用 Electron-builder,并且构建所需的配置是在electro.manifest.json文件(在构建部分)中进行的。此外,还存储了自己的 Electron.NET 配置(在根目录上)。
请确保您的electro.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 可以添加到Startup类中的 DI 容器中。 Electron 中可用的所有模块都将作为单例添加。
using ElectronNET . API ;
public void ConfigureServices ( IServiceCollection services )
{
services . AddElectron ( ) ;
}