Run the correct entrypoint
This commit is contained in:
parent
d4308a740d
commit
c41057a634
|
@ -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 (@"<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Ooui Wasm</title>
|
||||
<meta name=""viewport"" content=""width=device-width, initial-scale=1"" />
|
||||
<link rel=""stylesheet"" href=""https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"" />
|
||||
<link rel=""stylesheet"" href=""https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"">
|
||||
|
@ -167,12 +178,8 @@ namespace Ooui.Wasm.Build.Tasks
|
|||
<div id=""ooui-body"" class=""container-fluid"">
|
||||
<p id=""loading""><i class=""fa fa-refresh fa-spin"" style=""font-size:14px;margin-right:0.5em;""></i> Loading...</p>
|
||||
</div>
|
||||
|
||||
<script type=""text/javascript"" src=""ooui.js""></script>
|
||||
<script type=""text/javascript"">
|
||||
var mainAsmName = """);
|
||||
w.Write (Path.GetFileNameWithoutExtension (Assembly));
|
||||
w.Write (@""";
|
||||
var assemblies = [");
|
||||
var head = "";
|
||||
foreach (var l in linkedAsmNames) {
|
||||
|
@ -182,8 +189,8 @@ namespace Ooui.Wasm.Build.Tasks
|
|||
w.Write ('\"');
|
||||
head = ",";
|
||||
}
|
||||
w.WriteLine (@"];
|
||||
oouiWasm (mainAsmName, """", ""Program"", ""Main"", assemblies);
|
||||
w.WriteLine ($@"];
|
||||
oouiWasm (""{Path.GetFileNameWithoutExtension (Assembly)}"", ""{entryPoint.DeclaringType.Namespace}"", ""{entryPoint.DeclaringType.Name}"", ""{entryPoint.Name}"", assemblies);
|
||||
</script>
|
||||
<script async type=""text/javascript"" src=""mono.js""></script>
|
||||
</body>
|
||||
|
|
|
@ -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";
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue