5

我想运行一个简单的 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?我错过了什么?

我的项目输出文件夹如下所示; 在此处输入图像描述

我还运行了 update V8 命令。它成功了,但没有任何改变 在此处输入图像描述

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

4

4 回答 4

3

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

于 2019-02-07T16:31:48.037 回答
1

解决方案是使用安装程序

于 2015-12-14T17:37:27.090 回答
1

正如建议的那样,安装程序是帮助解决这种情况的一种方法。

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

Install-Package ClearScript.V8 

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

于 2016-06-20T13:48:07.207 回答
0

我发现如果您将 Nuget 安装程序应用到网站(即没有项目文件),它会失败。这是因为 install.ps1 中的脚本尝试将 PostBuildCmd.ps1 中的脚本附加到不存在的构建后命令。(安装程序声明成功,但不可信!)

有问题的 post-build-command 只是将 , 中的两个文件夹中的所有内容复制..\packages\ClearScript.V8.5.4.7\tools\native到应用程序的bin文件夹中。但是,如果您只是手动执行此操作,那么您会遇到另一个问题:在主机上找不到 Clearscript 文件(即抢先预加载 DLL)。您需要添加

<remove ...

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

于 2017-01-06T13:05:27.690 回答