5

我看到微软开源的IL2JS,它似乎是一个通过编译 IL 将 Silverlight 应用程序编译为纯 javascript 的工具。

但是,我似乎无法让它工作。当我运行时:

PS C:\source\IL2JS-master\bin> ./il2jsr -rewrite C:\FlatRedBallProjects\Test1\Test1\Test1\Bin\Debug\Test1.dll -out test.js -reference .\IL2JS_mscorlib.dll

当我运行这个时,我得到

错误 3003:没有程序集名称类似于特殊的“JSTypes”程序集 1 个错误,0 个警告

所以我尝试为 jstypes 添加另一个 -reference 选项并得到以下输出:

PS C:\source\IL2JS-master\bin> ./il2jsr -rewrite C:\FlatRedBallProjects\Test1\Test1\Test1\Bin\Debug\Test1.dll -out test.js -reference .\IL2JS_mscorlib.dll -reference 。 \IL2JS_JSTypes_silverlight.dll

错误 3005:无法从文件“C:\source\IL2JS-master\bin”加载程序集:无法加载 mscorlib 1 个错误,0 个警告

所以看起来你只能有一个 -reference 选项,但你需要以某种方式引用 jstypes 和 mscorlib 程序集。

我究竟做错了什么?


编辑:因此,经过更多调试后,正确的方法似乎是使用 2 -reference 参数。后者不起作用的原因是因为

        CCI.SystemTypes.Initialize(false, true, ResolveReference);

        // ----------------------------------------
        // Account for mscorlib being loaded
        // ----------------------------------------
        mscorlib = CCI.SystemTypes.SystemAssembly;
        if (mscorlib == null || mscorlib.Directory == null)

AssemblyLoader.cs. 最后一个 if 语句失败(mscorlib.Directory为空)。现在的问题是为什么...

4

1 回答 1

0

根据https://github.com/Reactive-Extensions/IL2JS/blob/master/HOW_TO_BUILD.txt,需要设置 IL2JSROOT 环境变量,

“或将注册设置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IL2JS@Root 设置为 。上面的 powershell 设置为您设置了此变量。如果您希望在其他地方使用解决方案或项目,请自行设置此变量。”

试试看,它可能会有所帮助。

于 2013-08-02T06:20:39.683 回答