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

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

它崩溃但有以下消息—:

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

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

您指的是以下代码

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的

  • 添加ScriptControl – 语言参数
  • 使用ScriptControl方法 – Eval方法

从上面的2个链接中你会看到这是与VB6相关的,如果你想使用你问题中提到的上面的代码,你将需要msscript.ocx 。 请检查您是否有此文件。 您可能需要使用regsvr32正确注册

我正在使用64位计算机,我在以下文件夹C:\Windows\SysWOW64看到该文件