-
Notifications
You must be signed in to change notification settings - Fork 55
Error when running the Electron Desktop app #195
Comments
My answer The BlazorMobile project doesn’t have yet automatized tests and builds, so i may miss potential regressions.
I will open an issue on Github with some of theses issue for tracking purpose.
But beware, WebApplicationFactory.SetHttpPort was already called on your Desktop app indrectly. In fact, it is called in the shared Xamarin project, the common one used also for BlazorMobile for Android/iOS/UWP. The call should be done in the project with the shortest name, meaning if working directly on the source code, in the BlazorMobile.Sample project, in the file App.xaml.cs. In my opinion, it is better to remove your line, and only modify the one in the shared project, as the change will be reflected on all platform implementations directly. Note also that if the call to this method is not made, or if the port is unavailable, it will default to 8888 (if not called) or at least to the first available port. So you don’t have to worry about port when releasing the app, it’s meaningful mainly when debugging.
The useWASM option should influence. If you set it to false, you have to override the pure ASP.NET Core port used in Program.cs from the Desktop project, as it use Kestrel server. Please correct me if I understood something wrong. |
I reproduced the error locally , trying to fix that ! |
I don't know yet if this is a bug or a regression from me or from .NET Core / Visual Studio. Actually, it seem that some project DLL are not generated when publishing the project if we are in Debug configuration. However everything seem to be fine (in term of generation) when building in release mode. Investigating. |
It seem that all the missing dependencies are all the transitives dependencies from NuGet packages. The publish event look fine in bin folder, but there is some missing content when seeing the obj folder about the temporary published files. ElectronNET is maybe relying on that, i must investigate how it is published and fetched for the ElectronNET deploy. |
This issue appear in BlazorMobile 3.2.3 but not in BlazorMobile 3.2.2. BlazorMobile 3.2.3 use the new Blazor publishing format, but as it was related to WASM, i don't know if this is for this reason. |
I'm not totally sure, but it seem this bug occur since the Blazor publish workflow has change from Microsoft side. I don't know why, but the integrated publish event seem to forget transitives dependencies from the Blazor project referenced from Desktop. I created a NuGet package for the next version called BlazorMobile.Build.ElectronNET that workaround this issue in the publishing event. It should work out of the box in the next release. |
Closing as it will be available in next release. |
This issue is created from a review received by mail
What we had to do to get Electron Desktop working
1) We received the error below when running the Electron Desktop app
Error in the Windows App Event Log
Description: A .NET Core application failed.
Application: BlazorMobile.Sample.Desktop.exe
Path: C:\workspace\blazormobile\src\BlazorMobile.Templates\content\BlazorMobile.Sample\BlazorMobile.Sample.Desktop\obj\Host\bin\BlazorMobile.Sample.Desktop.exe
Message: Error:
An assembly specified in the application dependencies manifest (BlazorMobile.Sample.Desktop.deps.json) was not found:
package: 'BlazorMobile.Common', version: '3.2.4-preview2.20160.5'
path: 'lib/netstandard2.0/BlazorMobile.Common.dll'
How We Fixed
Copy the dll’s below to "NOOB.Wallet.Podium.Desktop/obj/Host/bin"
BlazorMobile.Common.dll
BlazorMobile.Web.dll
Microsoft.AspNetCore.Blazor.HttpClient.dll
Microsoft.AspNetCore.Components.WebAssembly.dll
Microsoft.AspNetCore.Components.WebAssembly.Server.dll
Microsoft.JSInterop.WebAssembly.dll
Newtonsoft.Json.dll
NOOB.Wallet.Podium.Common.dll (or BlazorMobile.Sample.Common.dll)
2) In the electron desktop app had to apply a fix for an issue with port 8888
a) Goto project NOOB.Wallet.Podium.Desktop or BlazorMobile.Sample.Desktop
b) Edit Startup.cs -> find "app.UseBlazorMobileWithElectronNET(useWASM)” and add "WebApplicationFactory.SetHttpPort(8882);" above "app.UseBlazorMobileWithElectronNET(useWASM)"
the new file should look like the rows of data below
WebApplicationFactory.SetHttpPort(8882);
app.UseBlazorMobileWithElectronNET(useWASM);
3) Goto project NOOB.Wallet.Podium or BlazorMobile.Sample and goto App.xml code( App.xml.cs)
edit the port number
i.g WebApplicationFactory.SetHttpPort(8881);
Question: Why did we put WebApplicationFactory.SetHttpPort(8882); above to app.UseBlazorMobileWithElectronNET(useWASM);
Answer: We did so to override the port. it was not overriding when “iselectron” is set to “true”
The text was updated successfully, but these errors were encountered: