在C#ConsoleApp中缺少ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll

时间:2015-01-16 09:51:43

标签: c# clearscript

我想运行一个简单的clearscript程序。 为此,我创建了一个新的ConsoleProject并通过nuget添加了引用。

创建引擎时(第一行代码)

  using (var engine = new V8ScriptEngine()) 

我得到了

  

System.TypeLoadException未处理_HResult = -2146233054
  _message =无法加载V8接口组件;验证您的应用程序是否安装了以下文件:ClearScriptV8-32.dll,   ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll

我只找到了dll:v8-ia32.dll,v8-x64.dll但没有任何ClearscriptV8 - * .dll

我将它们复制到编译输出,但在运行console.exe时没有改变任何内容

我还从Github下载了包,但是没有包含这样的dll。我只有一个ClearScript.dll。

运行包含的控制台项目会引发相同的错误。

我从哪里获取这些dll? 我错过了什么?

项目的输出文件夹如下所示; enter image description here

我还运行了更新V8命令。它成功但没有改变 enter image description here

然后我还安装了C ++ Redistribueable,如下所述:Clearscript files cannot be found on host

4 个答案:

答案 0 :(得分:1)

解决方案是使用安装程序

答案 1 :(得分:1)

根据建议,安装程序是帮助解决问题的一种方法。

由于现在存在完整的Nuget包,我建议使用它。 它确实使整个安装任务变得更加容易。

Install-Package ClearScript.V8 

https://www.nuget.org/packages/ClearScript.V8/

答案 2 :(得分:0)

如果您将Nuget安装程序应用于网站(即没有项目文件),我发现Nuget安装程序失败了。这是因为install.ps1中的脚本尝试将PostBuildCmd.ps1中的脚本附加到不存在的post-build-command。 (安装程序声明成功,但不值得信任!)

有问题的post-build-command只是将..\packages\ClearScript.V8.5.4.7\tools\native中的两个文件夹中的所有内容复制到应用程序的bin文件夹中。但是,如果只是手动执行此操作,则会遇到另一个问题:Clearscript files cannot be found on host(即抢先预加载DLL)。你需要添加

<remove ...

行(在该链接的项目中定义)到web.config 以及执行手动复制。

答案 3 :(得分:0)

它正在寻找V8 32Bit版本,因此请确保安装此nuget包JavaScriptEngineSwitcher.V8.Native.win-x86。我拉着头发想弄清楚,但这绝对可以解决我的问题。