我试图从C#代码中调用Javascript函数“eval”(将字符串用于运算符解析器)。我使用了以下代码: https://stackoverflow.com/a/12431435/712700
但是崩溃了,但是有以下消息---:
异常详细信息: System.Runtime.InteropServices.COMException:使用CLSID检索组件的COM类工厂 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}由于以下原因而失败 错误:80040154未注册类(HRESULT异常: 0x80040154(REGDB_E_CLASSNOTREG))。
我认为问题是因为项目/机器是64位。我不想将项目更改为32位,是否有另一个CLSID我可以使用它使64位工作?或者是否有另一种方法可以简单地在C#代码中使用Javascript中的“eval”函数?
答案 0 :(得分:1)
您指的是以下代码
Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
dynamic obj = Activator.CreateInstance(scriptType, false);
obj.Language = "javascript";
var res = obj.Eval("a=3; 2*a+32-Math.sin(6)");
上面的ClSID实际上是用于ScriptControl
从上面的2个链接中你会看到这与VB6有关,如果你想使用你问题中提到的上面的代码,你将需要 msscript.ocx 。请检查您是否有此文件。您可能需要使用regsvr32
正确注册我使用的是64位计算机,我在以下文件夹C:\Windows\SysWOW64