2017-01-30 21 views
0

У меня возникает ошибка сборки при запуске приложения в качестве сервиса. Это происходит не всякий раз, когда я запускаю проект непосредственно из Visual Studio. Ниже приведено полное сообщение об ошибке. Кажется, что ошибка заключается в следующем:Ошибка сборки при запуске службы

Сравнивая имя сборки в результате несоответствия: ОТКРЫТОГО КЛЮЧА ЗНАК

Каждый знает, что PUBLIC KEY TOKEN и как это исправить?

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

это кажется более серьезным: System.IO.FileLoadException: Не удалось загрузить файл или сборку 'ClearScript, Version = 5.4.4.0. Убедитесь, что DLL находится в той же папке, что и исполняемый файл. – invalidusername

+0

@invalidusername библиотека находится в одной папке, это первое, что я проверил. – NicoRiff

+0

Попробуйте настроить службу Windows для запуска под локальным пользователем Windows, а не под системным пользователем (по умолчанию). Эти параметры можно найти в свойствах службы Windows. Это может помочь. –

ответ

0

Похоже, из журнала, ClearScriptV8-32, связан с не-подписанной версией этой библиотеки, но все локальные версии подписаны.

Если вы строите ClearScriptV8-32 себя - проверить, если ссылка на ClearScript указывает на подписанной версии, в противном случае двойной проверки с ILDASM что ClearScriptV8-32 действительно относится к не подписанные версии и попросить владельца предоставить другую версию.

Для получения дополнительной информации см. this forum thread.