2014-09-26 9 views
4

클래스 라이브러리에서 Json과 ReshSharp Portable을 사용하는 간단한 프로젝트를 만들었습니다.NewtonSoft.Json 어셈블리가 일치하지 않습니다.

Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Newtonsoft.Json 라이브러리 (nuget)에 있고 어떤 의존성이 없다 (즉 nuget 말한다) : 나는 응용 프로그램을 lanuch 때

나는 항상이 예외가있다. 버전의 경우 모두 정상이며 6.0.0.0은 참조 폴더에있는 버전입니다.

나에게 도움을 사전에

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="FubarCoder.RestSharp.Portable" version="1.6.3" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
    <package id="Microsoft.Bcl" version="1.1.9" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
    <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
    <package id="Microsoft.Net.Http" version="2.2.28" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
    <package id="Newtonsoft.Json" version="6.0.5" targetFramework="portable-win+net45+MonoAndroid10+MonoTouch10" /> 
</packages> 

감사 packages.config있다

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.2.28.0" newVersion="4.2.28.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

을의 app.config있다

편집 : 하나의 콘솔에서이 클래스 라이브러리를 시작 응용 프로그램

이 i

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.2.28.0" newVersion="4.2.28.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.5" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

NewtonSoft.Json의 정보를 정기적으로 (telerikJustDecompile에) :

[assembly: AssemblyCompany("Newtonsoft")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCopyright("Copyright © James Newton-King 2008")] 
[assembly: AssemblyDescription("Json.NET is a popular high-performance JSON framework for .NET")] 
[assembly: AssemblyFileVersion("6.0.5.17707")] 
[assembly: AssemblyProduct("Json.NET")] 
[assembly: AssemblyTitle("Json.NET Portable")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyVersion("6.0.0.0")] 
[assembly: CLSCompliant(true)] 
[assembly: CompilationRelaxations(8)] 
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] 
[assembly: InternalsVisibleTo("Newtonsoft.Json.Dynamic, PublicKey=0024000004800000940000000602000000240000525341310004000001000100cbd8d53b9d7de30f1f1278f636ec462cf9c254991291e66ebb157a885638a517887633b898ccbcf0d5c5ff7be85a6abe9e765d0ac7cd33c68dac67e7e64530e8222101109f154ab14a941c490ac155cd1d4fcba0fabb49016b4ef28593b015cab5937da31172f03f67d09edda404b88a60023f062ae71d0b2e4438b74cc11dc9")] 
[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f561df277c6c0b497d629032b410cdcf286e537c054724f7ffa0164345f62b3e642029d7a80cc351918955328c4adc8a048823ef90b0cf38ea7db0d729caf2b633c3babe08b0310198c1081995c19029bc675193744eab9d7345b8a67258ec17d112cebdbbb2a281487dceeafb9d83aa930f32103fbe1d2911425bc5744002c7")] 
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)] 
[assembly: TargetFramework(".NETPortable,Version=v4.5,Profile=Profile259", FrameworkDisplayName=".NET Portable Subset")] 

NewtonSoft.Json 속성 (VS에서) :

런타임 버전 : 새로운 내가 사용의 app.config를이야 V4 .0.30319 버전 : 6.0.0.0 NuGet 패키지에서

, Json.Net 버전으로 참조 6.0.5

+0

앱이 휴대용 앱입니까 아니면 일반 앱입니까? – Mrchief

+0

또한 dll은'packages \ Newtonsoft.Json.6.0.5 \ lib \ portable-win + net45 + MonoAndroid10 + MonoTouch10' 위치에서 참조되는 것을 보시겠습니까? 그것은 패키지하에 존재합니까? – Mrchief

+0

@Murchief : 예외는 PCL에 있지만 콘솔 앱에 의해 실행됩니다. – clement

답변

3

이러한 종류의 오류의 일반적인 원인은 종속 어셈블리가없는 버전에서 어셈블리를 찾으려고하는 것입니다. ProjectXProjectX Json.NET 6이 필요하며 버전 6.0.5 만 있다고 가정 해 보겠습니다. 그것은 문제를 일으킬 것입니다. 필요한 버전을 설치하거나 assemblyBinding을 사용할 수 있습니다.

assemblyBinding을 사용하면 요청한 버전과 다른 버전을 제공 할 수 있습니다. 요청한 버전은 oldVersion이고 제공되는 버전은 newVersion입니다. 위의 코드 조각의 번호가 일치하지 않는 경우가 수행 될 때까지 조정할하려고

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.5" /> 
    </dependentAssembly> 

:

이보십시오. 큰

+0

좋은 시도했지만이 동일한 장소에서 같은 예외가 작동하지 않았다. 감사합니다 – clement

+0

고마워,하지만 다시 같은 예외 (그들은 6.0.0 이야기) – clement

+0

당신이 설치 한 버전을 확인해 주시겠습니까? –

1

는 지침 :-) 내 문제를 해결 : 먼저 (package.config 파일에서 확인) 설치된 Newtonsoft.Json의 버전을 찾아 이전 버전 0.0.0.0-6.0.0.0하고 NEWVERSION = "해야하는 당신을 설치된 "

<dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.4" /> 
     </dependentAssembly> 
관련 문제