0

我正在尝试从 C# 代码内部调用 Javascript 函数“eval”(以将字符串用于运算符解析器)。我使用了以下代码: https ://stackoverflow.com/a/12431435/712700

但它会崩溃并显示以下消息---:

异常详细信息: System.Runtime.InteropServices.COMException:检索具有 CLSID {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154(REGDB_E_CLASSNOTREG) ))。

我相信问题是因为项目/机器是 64 位的。我不想将项目更改为 32 位,是否可以使用另一个 CLSID 使其与 64 位一起使用?或者是否有另一种方法可以在 C# 代码中简单地利用 Javascript 中的“eval”函数?

4

1 回答 1

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

于 2013-04-18T07:07:39.577 回答