我看到微软开源的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
为空)。现在的问题是为什么...