Run the correct entrypoint
This commit is contained in:
parent
d4308a740d
commit
c41057a634
|
@ -29,6 +29,7 @@ namespace Ooui.Wasm.Build.Tasks
|
||||||
CopyRuntime ();
|
CopyRuntime ();
|
||||||
LinkAssemblies ();
|
LinkAssemblies ();
|
||||||
ExtractClientJs ();
|
ExtractClientJs ();
|
||||||
|
DiscoverEntryPoint ();
|
||||||
GenerateHtml ();
|
GenerateHtml ();
|
||||||
GenerateServer ();
|
GenerateServer ();
|
||||||
return true;
|
return true;
|
||||||
|
@ -151,6 +152,17 @@ namespace Ooui.Wasm.Build.Tasks
|
||||||
Log.LogMessage ($"Client JS {dest}");
|
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 ()
|
void GenerateHtml ()
|
||||||
{
|
{
|
||||||
var htmlPath = Path.Combine (distPath, "index.html");
|
var htmlPath = Path.Combine (distPath, "index.html");
|
||||||
|
@ -158,7 +170,6 @@ namespace Ooui.Wasm.Build.Tasks
|
||||||
w.Write (@"<!DOCTYPE html>
|
w.Write (@"<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Ooui Wasm</title>
|
|
||||||
<meta name=""viewport"" content=""width=device-width, initial-scale=1"" />
|
<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://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"">
|
<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"">
|
<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>
|
<p id=""loading""><i class=""fa fa-refresh fa-spin"" style=""font-size:14px;margin-right:0.5em;""></i> Loading...</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type=""text/javascript"" src=""ooui.js""></script>
|
<script type=""text/javascript"" src=""ooui.js""></script>
|
||||||
<script type=""text/javascript"">
|
<script type=""text/javascript"">
|
||||||
var mainAsmName = """);
|
|
||||||
w.Write (Path.GetFileNameWithoutExtension (Assembly));
|
|
||||||
w.Write (@""";
|
|
||||||
var assemblies = [");
|
var assemblies = [");
|
||||||
var head = "";
|
var head = "";
|
||||||
foreach (var l in linkedAsmNames) {
|
foreach (var l in linkedAsmNames) {
|
||||||
|
@ -182,8 +189,8 @@ namespace Ooui.Wasm.Build.Tasks
|
||||||
w.Write ('\"');
|
w.Write ('\"');
|
||||||
head = ",";
|
head = ",";
|
||||||
}
|
}
|
||||||
w.WriteLine (@"];
|
w.WriteLine ($@"];
|
||||||
oouiWasm (mainAsmName, """", ""Program"", ""Main"", assemblies);
|
oouiWasm (""{Path.GetFileNameWithoutExtension (Assembly)}"", ""{entryPoint.DeclaringType.Namespace}"", ""{entryPoint.DeclaringType.Name}"", ""{entryPoint.Name}"", assemblies);
|
||||||
</script>
|
</script>
|
||||||
<script async type=""text/javascript"" src=""mono.js""></script>
|
<script async type=""text/javascript"" src=""mono.js""></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -108,8 +108,9 @@ function ooui (rootElementPath) {
|
||||||
monitorSizeChanges (1000/10);
|
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;
|
Module.assemblies = assemblies;
|
||||||
|
|
||||||
monitorSizeChanges (1000/30);
|
monitorSizeChanges (1000/30);
|
||||||
|
@ -453,15 +454,15 @@ var WebAssemblyApp = {
|
||||||
if (!this.ooui_ReceiveWebAssemblySessionMessageJson_method)
|
if (!this.ooui_ReceiveWebAssemblySessionMessageJson_method)
|
||||||
throw "Could not find 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)
|
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)
|
if (!this.main_class)
|
||||||
throw "Could not find Program class in main module";
|
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)
|
if (!this.main_method)
|
||||||
throw "Could not find Main method";
|
throw "Could not find Main method";
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue