2017-01-30 6 views
0

서비스 응용 프로그램을 실행할 때 어셈블리 오류가 발생합니다. Visual Studio에서 직접 프로젝트를 시작할 때마다 이런 일이 발생하지 않습니다. 아래는 완전한 오류 메시지입니다.서비스로 실행 중 어셈블리 오류가 발생했습니다.

비교 어셈블리 이름이 일치하지 않는 결과 : 오류가이 것 같다 공개 키 토큰 누구나 PUBLIC KEY TOKEN가 어떻게이 문제를 해결하는 방법 알고

?

그것은 로그, ClearScriptV8-32에서 보이는
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, 버전 = 5.4.4.0을로드 할 수 없습니다. DLL이 실행 파일과 동일한 폴더에 있는지 확인하십시오. – invalidusername

+0

@invalidusername 라이브러리가 동일한 폴더에 있는데, 내가 가장 먼저 확인한 것입니다. – NicoRiff

+0

시스템 사용자 (기본값)가 아닌 Windows의 로컬 사용자로 Windows 서비스를 실행하도록 설정하십시오. 이 설정은 Windows 서비스 속성에서 찾을 수 있습니다. 도움이 될 수 있습니다. –

답변

0

는, 그 DLL의 비 서명 된 버전에 연결되어 있지만, 모든 로컬 버전이 서명됩니다.

당신이 ClearScriptV8-32을 구축 할 경우 자신이 - 체크하면 서명 된 버전에 ClearScript 점, ClearScriptV8-32 실제로 비 서명 된 버전을 의미하고 다른 버전을 제공하는 주인을 물어 ILDASM와 달리 한 번 확인을 참조.

자세한 내용은 this forum thread을 참조하십시오.