我想运行一个简单的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? 我错过了什么?
项目的输出文件夹如下所示;
我还运行了更新V8命令。它成功但没有改变
然后我还安装了C ++ Redistribueable,如下所述:Clearscript files cannot be found on host
答案 0 :(得分:1)
解决方案是使用安装程序
答案 1 :(得分:1)
根据建议,安装程序是帮助解决问题的一种方法。
由于现在存在完整的Nuget包,我建议使用它。 它确实使整个安装任务变得更加容易。
Install-Package 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。我拉着头发想弄清楚,但这绝对可以解决我的问题。