gpt4 book ai didi

javascript - 如何在网页中访问基本的 JSIL 库(来自 C#)?

转载 作者:数据小太阳 更新时间:2023-10-29 06:05:02 27 4
gpt4 key购买 nike

我正在尝试开始使用 JSIL .据我所知,我已按照指示进行操作。我有一个非常基本的 C# 虚拟项目,代码如下:

namespace TestLib
{
public class MagicType
{
public int Multiply(int x, int y)
{ // test instance method
return x * y;
}
public static int Add(int x, int y)
{// test static int method
return x + y;
}
}
}

我用 jsilc 编译了它,并创建了一个网站来托管它和 jsil 脚本。我的 html 对此进行了初始化:

<script type="text/javascript">
var jsilConfig = {
libraryRoot: '/js/jsil/',
scriptRoot: '/js/testlib/',
manifestRoot: '/js/testlib/',
manifests: ['TestLib.dll'] // gets as far as Loading '/js/testlib/TestLib.dll.manifest.js'...
// which is 200 / OK
};
var asm = null;
var runMain = function () { // doesn't get invoked
console.log('> main');
asm = JSIL.GetAssembly("TestLib", true); // (executed outside method) returns a stub with no content
console.log('< main');
};
</script>
<script src="/js/jsil/jsil.js"></script>

但是...我无法访问图书馆。控制台输出表明它正在加载:

Loading '/js/testlib/TestLib.dll.manifest.js'...

这是 200 OK。但是,我无法访问它。如果我运行:

var asm = JSIL.GetAssembly("TestLib", true);

然后我取回图书馆 stub ,但里面什么都没有。有一个 asm.$typesByName,但它是一个空对象。我想要做的(查看它的工作)是调用 MultiplyAdd 方法。

那么:我错过了什么?我的意图是托管一个我可以通过 js 访问的转译库,据我所知:可能。我只是无法让它发挥作用。我已经在这里上传了我的整个测试项目:https://github.com/mgravell/jsilfun

最佳答案

缺少的部分是 JSIL 的浏览器层分两个阶段执行加载: Bootstrap ,您已成功加载并加载 list ,然后是浏览器脚手架,它设置 DOM 接口(interface)并实际执行程序集你已经加载了。这分两个阶段发生,因为很多事情都是异步的,您可能有理由自己加载其他程序集或在实际运行所有代码之前做其他工作。

浏览器脚手架公开了一个名为 onLoad 的函数(是的,对不起)你可以打电话来执行第二阶段。这些例子都是用 <body onload="onLoad()"> 做的。或类似的东西,但您可以随意调用它。

关于javascript - 如何在网页中访问基本的 JSIL 库(来自 C#)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com