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
Solution is to use the installer
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
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.
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