JavaScriptEngineSwitcher.V8 NuGet package incompatible with .NET Core
Zenexer opened this issue · 2 comments
Zenexer commented
I'm attempting to use V8 with .NET Core 2.1. ChakraCore works, more or less, but whenever I try to use V8:
System.MissingMethodException: Method not found: 'System.AppDomainSetup System.AppDomain.get_SetupInformation()'.
at JavaScriptEngineSwitcher.V8.AssemblyResolver.AssemblyResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.InvokeResolveEvent(ResolveEventHandler eventHandler, RuntimeAssembly assembly, String name)
System.IO.FileLoadException: Could not load file or assembly 'ClearScriptV8, Culture=neutral, PublicKeyToken=null'. Method does not exist. (Exception from HRESULT: 0x80131513)
File name: 'ClearScriptV8, Culture=neutral, PublicKeyToken=null' ---> System.MissingMethodException: Method not found: 'System.AppDomainSetup System.AppDomain.get_SetupInformation()'.
at JavaScriptEngineSwitcher.V8.AssemblyResolver.AssemblyResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.InvokeResolveEvent(ResolveEventHandler eventHandler, RuntimeAssembly assembly, String name)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, StackCrawlMark& stackMark, IntPtr pPrivHostBinder)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, StackCrawlMark& stackMark)
at System.Reflection.Assembly.Load(String assemblyString)
at Microsoft.ClearScript.V8.V8Proxy.LoadAssembly()
at Microsoft.ClearScript.V8.V8Proxy.GetAssembly()
at Microsoft.ClearScript.V8.V8Proxy.GetImplType(Type type)
at Microsoft.ClearScript.V8.V8Proxy.CreateImpl[T](Object[] args)
at Microsoft.ClearScript.V8.V8Runtime..ctor(String name, V8RuntimeConstraints constraints, V8RuntimeFlags flags, Int32 debugPort)
at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(V8Runtime runtime, String name, V8RuntimeConstraints constraints, V8ScriptEngineFlags flags, Int32 debugPort)
at JavaScriptEngineSwitcher.V8.V8JsEngine..ctor(V8Settings settings)
I noticed that I get a warning for the JavaScriptEngineSwitcher.V8 NuGet dependency:
Package 'JavaScriptEngineSwitcher.V8 2.4.13' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'. This package may not be fully compatible with your project.
Sure enough, the NuGet package requires .NET Framework v4.0 or v4.5:
Am I correct in assuming that JavaScriptEngineSwitcher.V8 is incompatible with .NET Core?
Taritsyn commented
Hello, Paul!
Am I correct in assuming that JavaScriptEngineSwitcher.V8 is incompatible with .NET Core?
Yes, you understood correctly. There is even a note in the README.md
file:
- JS Engine Switcher: V8 (supports .NET Framework 4.0 Client and .NET Framework 4.5)
JavaScriptEngineSwitcher.V8 module is based on the Microsoft ClearScript.V8 library that is not yet compatible with .NET Core.