Missing ClearScriptV8-64.dll, v8-ia32.dll, v8-x64.dll in C# ConsoleApp

牧云@^-^@ 提交于 2019-12-05 01:45:33

问题


I want to run a simple clearscript program. For this i created a new ConsoleProject and added the reference via nuget.

When creating the Engine (first line of code)

  using (var engine = new V8ScriptEngine()) 

i get

System.TypeLoadException was unhandled _HResult=-2146233054
_message=Cannot load V8 interface assembly; verify that the following files are installed with your application: ClearScriptV8-32.dll, ClearScriptV8-64.dll, v8-ia32.dll, v8-x64.dll

I Only found the dlls: v8-ia32.dll, v8-x64.dll but not any ClearscriptV8-*.dll

I copied them to the compile output but that didn't change any when running the console.exe

I also downloaded the Package from Github and there is neither such a dll included. I only have a ClearScript.dll.

Running the included Console Project throws same error.

Where do I get those dlls from ? What am I missing ?

My output folder of the project looks like this;

I also ran the update V8 command. It succeded but nothing changed

Then I also installed the C++ Redistribueable like descriped here: Clearscript files cannot be found on host


回答1:


Solution is to use the installer




回答2:


As suggested, the installer is one way to help resolve the situation.

Since there now exist a full Nuget Package, I will recommend to use that instead. It definitely made the whole install task so much easier.

Install-Package ClearScript.V8 

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




回答3:


It's looking for the V8 32Bit version so make sure install this nuget package JavaScriptEngineSwitcher.V8.Native.win-x86. I was pulling my hair trying to figure out but this one definitely solved the issue for me.




回答4:


I found that the Nuget installer fails if you are applying it to a web-site (i.e. no project file). This is because the script in install.ps1 attempts to append the script in PostBuildCmd.ps1 to a non-existent post-build-command. (The installer declares success, but it's not to be trusted!)

The post-build-command in question simply copies everything from both folders in ..\packages\ClearScript.V8.5.4.7\tools\native, into the bin folder of the application. However, if you just do that manually, then you get another problem mentioned in: Clearscript files cannot be found on host (i.e. preemptive pre-loading of DLLs). You'll need to add the

<remove ...

lines (defined in the item at that link) to web.config as well as performing the manual copy.



来源:https://stackoverflow.com/questions/27981220/missing-clearscriptv8-64-dll-v8-ia32-dll-v8-x64-dll-in-c-sharp-consoleapp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!