我看到微软开源IL2JS,这似乎是通过编译IL将Silverlight应用程序编译为纯JavaScript的工具。
然而,我似乎无法让它发挥作用。我跑的时候:
PS C:\ source \ IL2JS-master \ bin> ./il2jsr -rewrite C:\ FlatRedBallProjects \ Test1 \ Te st1 \ 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参考参数。后者不起作用的原因是
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
为null)。现在问题是为什么......
答案 0 :(得分:0)
根据https://github.com/Reactive-Extensions/IL2JS/blob/master/HOW_TO_BUILD.txt,您需要设置IL2JSROOT环境变量
“或注册设置 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ IL2JS @根 被设置为。上面的powershell设置为您设置此变量。如果你希望 要在其他地方使用解决方案或项目,请自行设置此变量。“
试试看,它可能会有所帮助。