0

I'm getting an assembly error when I run my application as service. This doesn't happen whenever I launch the project directly from Visual Studio. Below is the complete error message. It seems that the error is this:

Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN

Anyone knows what PUBLIC KEY TOKEN is and how to fix this?

30/01/2017 11:06:41 a.m.: System.IO.FileLoadException: Could not load file or assembly 'ClearScript, Version=5.4.4.0, Culture=neutral, PublicKeyToken=935d0c957da47c73' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'ClearScript, Version=5.4.4.0, Culture=neutral, PublicKeyToken=935d0c957da47c73'
   at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at System.Reflection.Assembly.GetType(String name)
   at Microsoft.ClearScript.V8.V8Proxy.GetImplType(Type type)
   at Microsoft.ClearScript.V8.V8Proxy.CreateImpl[T](Object[] args)
   at Microsoft.ClearScript.V8.V8IsolateProxy.Create(String name, V8RuntimeConstraints constraints, Boolean enableDebugging, Int32 debugPort)
   at Microsoft.ClearScript.V8.V8Runtime..ctor(String name, V8RuntimeConstraints constraints, V8RuntimeFlags flags, Int32 debugPort)
   at Microsoft.ClearScript.V8.V8Runtime..ctor(String name, V8RuntimeConstraints constraints, V8RuntimeFlags flags)
   at Microsoft.ClearScript.V8.V8Runtime..ctor(String name, V8RuntimeConstraints constraints)
   at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(V8Runtime runtime, String name, V8RuntimeConstraints constraints, V8ScriptEngineFlags flags, Int32 debugPort)
   at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(String name, V8RuntimeConstraints constraints, V8ScriptEngineFlags flags, Int32 debugPort)
   at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(V8ScriptEngineFlags flags, Int32 debugPort)
   at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(V8ScriptEngineFlags flags)
   at NinoJS.Core.Main.RunScript(Object filePath)

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\NinoJS\NinoJS\NinoJS.Service.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = ClearScript, Version=5.4.4.0, Culture=neutral, PublicKeyToken=935d0c957da47c73
 (Fully-specified)
LOG: Appbase = file:///C:/NinoJS/NinoJS/
LOG: Initial PrivatePath = NULL
Calling assembly : ClearScriptV8-32, Version=5.4.4.0, Culture=neutral, PublicKeyToken=935d0c957da47c73.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\NinoJS\NinoJS\NinoJS.Service.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: ClearScript, Version=5.4.4.0, Culture=neutral, PublicKeyToken=935d0c957da47c73
LOG: Attempting download of new URL file:///C:/NinoJS/NinoJS/ClearScript.DLL.
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Manfred Radlwimmer
  • 13,257
  • 13
  • 53
  • 62
NicoRiff
  • 4,803
  • 3
  • 25
  • 54
  • this seems to be more serious: System.IO.FileLoadException: Could not load file or assembly 'ClearScript, Version=5.4.4.0. Make sure the DLL is in the same folder as the executable. – invalidusername Jan 30 '17 at 14:14
  • @invalidusername the library is on the same folder, that is the first thing I checked – NicoRiff Jan 30 '17 at 14:15
  • Try to config your windows service to run under the Local User of the windows, not under the System User (default). You can find this settings in the windows service properties. It can help. – Alex Netrebsky Jan 30 '17 at 14:16

1 Answers1

0

It looks like from the log, ClearScriptV8-32, is linked to non-signed version of that DLL, but all local versions are signed.

If you build ClearScriptV8-32 yourself - check if reference to ClearScript points to signed version, otherwise double check with ILDasm that ClearScriptV8-32 indeed refers to non-signed version and ask owner to provide another version.

See this forum thread for more info.

parameter
  • 614
  • 10
  • 17