diff --git a/Ooui.Wasm.Build.Tasks/BuildDistTask.cs b/Ooui.Wasm.Build.Tasks/BuildDistTask.cs index 2164d26..27e1a16 100644 --- a/Ooui.Wasm.Build.Tasks/BuildDistTask.cs +++ b/Ooui.Wasm.Build.Tasks/BuildDistTask.cs @@ -29,6 +29,7 @@ namespace Ooui.Wasm.Build.Tasks CopyRuntime (); LinkAssemblies (); ExtractClientJs (); + DiscoverEntryPoint (); GenerateHtml (); GenerateServer (); return true; @@ -151,6 +152,17 @@ namespace Ooui.Wasm.Build.Tasks Log.LogMessage ($"Client JS {dest}"); } + MethodDefinition entryPoint; + + void DiscoverEntryPoint () + { + var asm = AssemblyDefinition.ReadAssembly (Assembly); + entryPoint = asm.EntryPoint; + if (entryPoint == null) { + throw new Exception ($"{Path.GetFileName (Assembly)} is missing an entry point"); + } + } + void GenerateHtml () { var htmlPath = Path.Combine (distPath, "index.html"); @@ -158,7 +170,6 @@ namespace Ooui.Wasm.Build.Tasks w.Write (@" - Ooui Wasm @@ -167,12 +178,8 @@ namespace Ooui.Wasm.Build.Tasks

Loading...

- diff --git a/Ooui/Client.js b/Ooui/Client.js index 1dc9dfe..27ca77d 100644 --- a/Ooui/Client.js +++ b/Ooui/Client.js @@ -108,8 +108,9 @@ function ooui (rootElementPath) { monitorSizeChanges (1000/10); } -function oouiWasm (mainAsmName, mainNamspace, mainClassName, mainMethodNmae, assemblies) +function oouiWasm (mainAsmName, mainNamespace, mainClassName, mainMethodName, assemblies) { + Module.entryPoint = { "a": mainAsmName, "n": mainNamespace, "t": mainClassName, "m": mainMethodName }; Module.assemblies = assemblies; monitorSizeChanges (1000/30); @@ -453,15 +454,15 @@ var WebAssemblyApp = { if (!this.ooui_ReceiveWebAssemblySessionMessageJson_method) throw "Could not find ReceiveWebAssemblySessionMessageJson method"; - this.main_module = MonoRuntime.assembly_load (mainAsmName); + this.main_module = MonoRuntime.assembly_load (Module.entryPoint.a); if (!this.main_module) - throw "Could not find Main Module " + mainAsmName + ".dll"; + throw "Could not find Main Module " + Module.entryPoint.a + ".dll"; - this.main_class = MonoRuntime.find_class (this.main_module, "", "Program") + this.main_class = MonoRuntime.find_class (this.main_module, Module.entryPoint.n, Module.entryPoint.t) if (!this.main_class) throw "Could not find Program class in main module"; - this.main_method = MonoRuntime.find_method (this.main_class, "Main", -1) + this.main_method = MonoRuntime.find_method (this.main_class, Module.entryPoint.m, -1) if (!this.main_method) throw "Could not find Main method"; },