2017-01-30 1 views
0

Je reçois une erreur d'assemblage lorsque j'exécute mon application en tant que service. Cela ne se produit pas lorsque je lance le projet directement à partir de Visual Studio. Voici le message d'erreur complet. Il semble que l'erreur est la suivante:Erreur d'assemblage lors de l'exécution en tant que service

En comparant le nom d'assemblage a donné lieu à la non-concordance: PUBLIC KEY TOKEN

Tout le monde sait ce que PUBLIC KEY TOKEN est et comment résoudre ce problème?

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. 
+0

cela semble être plus grave: System.IO.FileLoadException: Impossible de charger le fichier ou l'assemblage 'ClearScript, Version = 5.4.4.0. Assurez-vous que la DLL est dans le même dossier que l'exécutable. – invalidusername

+0

@invalidusername la bibliothèque se trouve dans le même dossier, c'est la première chose que j'ai vérifiée – NicoRiff

+0

Essayez de configurer votre service Windows pour qu'il s'exécute sous l'utilisateur local des fenêtres, pas sous l'utilisateur système (par défaut). Vous pouvez trouver ces paramètres dans les propriétés du service Windows. Cela peut aider. –

Répondre

0

Il ressemble à du journal, ClearScriptV8-32, est lié à la version non signée de cette DLL, mais toutes les versions locales sont signés.

Si vous construisez ClearScriptV8-32 vous - vérifier si la référence à ClearScript des points à la version signée, sinon une double vérification avec ildasm que ClearScriptV8-32 se réfère en effet à la version non signée et demander au propriétaire de fournir une autre version. Pour plus d'informations, voir this forum thread.