我试图在Electron.Net 6.0上使用.Net创建一个新的Blazor服务器应用程序。
与.Net 5.0和以前的版本不同,应用程序配置和启动代码现在是在Program.cs类中完成的,正如解释的这里一样。
在这个阶段,我不清楚的是如何在Electron.Net 6.0中转换所需的.Net行。
在文档中,我们应该添加以下行
// -- 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类,因此这两行应该转换为:
// -- 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的形式运行应用程序。
输出显示应用程序正在运行,但电子窗口没有显示。在这里,控制台输出:
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,显示正在运行的应用程序。看上去,尽管电子已经启动,但仍然不能正常运行。
发布于 2022-08-26 17:41:41
我想我想出来了。需要所有这些才能起作用。
builder.Services.AddElectron();
builder.WebHost.UseElectron(args);
if (HybridSupport.IsElectronActive)
{
var window = await Electron.WindowManager.CreateWindowAsync();
window.OnClosed += () =>
{
Electron.App.Quit();
};
}发布于 2022-08-29 12:29:56
仅仅说明主要方法可能不是async,这将导致以下代码:
// --- 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();
};
});
}https://stackoverflow.com/questions/73456755
复制相似问题