在C#中调用Javascript函数以获得64位项目

时间:2013-04-18 06:15:50

标签: c# javascript 64-bit eval clsid

我试图从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”函数?

1 个答案:

答案 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

中看到该文件