首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在blazor服务器应用程序中没有打开Electron.Net窗口(.Net 6.0)

在blazor服务器应用程序中没有打开Electron.Net窗口(.Net 6.0)
EN

Stack Overflow用户
提问于 2022-08-23 10:04:04
回答 2查看 383关注 0票数 2

我试图在Electron.Net 6.0上使用.Net创建一个新的Blazor服务器应用程序。

与.Net 5.0和以前的版本不同,应用程序配置和启动代码现在是在Program.cs类中完成的,正如解释的这里一样。

在这个阶段,我不清楚的是如何在Electron.Net 6.0中转换所需的.Net行。

文档中,我们应该添加以下行

代码语言:javascript
复制
// -- in Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseElectron(args); // <= THIS LINE
        webBuilder.UseStartup<Startup>();
    });

// -- in Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    // Open the Electron-Window here
    Task.Run(async () => await Electron.WindowManager.CreateWindowAsync());
}

现在,在.Net 6.0中,我们只剩下了Program.cs类,因此这两行应该转换为:

代码语言:javascript
复制
// -- Program.cs .Net 6.0
public static void Main(string[] args) {
    var builder = WebApplication.CreateBuilder(args);

    // --- Add electron...
    builder.WebHost.UseElectron(args);
    ....
    // -- run the app
    app.Run();
    // --- if running Electron - should window be created here - this way?
    Task.Run(async () => await Electron.WindowManager.CreateWindowAsync());
}

然后我以electronize start /PublishSingleFile false的形式运行应用程序。

输出显示应用程序正在运行,但电子窗口没有显示。在这里,控制台输出:

代码语言:javascript
复制
ElectronHostHook handling started...
Invoke electron.cmd - in dir: C:\myProject\obj\Host\node_modules\.bin
electron.cmd "..\..\main.js"

Electron Socket IO Port: 8000
Electron Socket started on port 8000 at 127.0.0.1
ASP.NET Core Port: 8001
stdout: info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:5001

stdout: info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.

stdout: info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\myProject\obj\Host\bin\

并在浏览器中导航到https://localhost:5001,显示正在运行的应用程序。看上去,尽管电子已经启动,但仍然不能正常运行。

EN

回答 2

Stack Overflow用户

发布于 2022-08-26 17:41:41

我想我想出来了。需要所有这些才能起作用。

代码语言:javascript
复制
builder.Services.AddElectron();
builder.WebHost.UseElectron(args);
if (HybridSupport.IsElectronActive)
{
    var window = await Electron.WindowManager.CreateWindowAsync();
    window.OnClosed += () =>
    {
        Electron.App.Quit();
    };
}
票数 1
EN

Stack Overflow用户

发布于 2022-08-29 12:29:56

仅仅说明主要方法可能不是async,这将导致以下代码:

代码语言:javascript
复制
// --- Add electron...
builder.Services.AddElectron();
builder.WebHost.UseElectron(args);
if (HybridSupport.IsElectronActive) {
    // Open the Electron-Window here
    Task.Run(async () => {
        var window = await Electron.WindowManager.CreateWindowAsync();
        window.OnClosed += () => {
        Electron.App.Quit();
      };
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73456755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档