【问题标题】:Calling the Javascript functions inside C# for a 64 bit project为 64 位项目调用 C# 中的 Javascript 函数
【发布时间】:2013-04-18 06:15:50
【问题描述】:

我正在尝试从 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”函数?

【问题讨论】:

标签: c# javascript 64-bit eval clsid


【解决方案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

【讨论】:

  • 谢谢你,我的文件和你在同一个位置。我在我的项目中引用了它,并在 regsvr32 中注册了它,不幸的是我仍然遇到同样的错误。
  • 你需要 x64 版本,我认为不存在。
猜你喜欢
  • 2020-09-21
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多