在c#中调用64位项目的Javascript函数

本文关键字:Javascript 函数 项目 64位 调用 | 更新日期: 2023-09-27 18:09:51

我试图从c#代码内部调用Javascript函数"eval"(利用字符串到操作符解析器)。我使用了以下代码:https://stackoverflow.com/a/12431435/712700

它崩溃了,并显示以下消息——:

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

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

在c#中调用64位项目的Javascript函数

您指的是以下代码

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 - Language参数
  • 使用ScriptControl方法- Eval方法

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

正确地注册它

我使用的是64位机器,我在以下文件夹C:'Windows'SysWOW64

中看到该文件