파일 또는 어셈블리 'Newtonsoft.Json'또는 해당 종속 항목 중 하나를로드 할 수 없습니다. 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다


216

검색 후 시도한 것 :

  1. Web.Config에서 이전 버전에 바인딩을 추가하십시오.

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
  2. 내 .csproj 파일을 편집하여 Newtonsoft 참조가 하나만 있는지 확인하십시오

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
  3. 내 컴퓨터에서 모든 Newtonsoft.Json.dll을 검색하고 6.0.1이 아닌 모든 버전을 삭제하고 내 임시 폴더의 내용을 삭제하십시오.

  4. Nuget Manager 콘솔에서 패키지 복구 / 다시 설치

그것은 성공하지만 사이트에 갈 때 오류가 발생합니다.

편집하다

좋아, 그래서 모든 nuget 패키지처럼 다시 설치하려고했는데 4.5 버전의 newtonsoft.json.dll을 다시 추가 한 것으로 보이지만 동일한 오류가 발생합니다. 내 프로젝트의 대상 freamework는 .NET 4.5.1이며 지금 얻는 스택 추적은 다음과 같습니다.

'/'응용 프로그램에 서버 오류가 있습니다.

파일이나 어셈블리 Newtonsoft.Json또는 해당 종속성 중 하나를 로드 할 수 없습니다 . 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT에서 예외 : 0x80131040)

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 발생한 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.IO.FileLoadException: 파일 또는 어셈블리 Newtonsoft.Json또는 해당 종속성 중 하나를 로드 할 수 없습니다 . 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT에서 예외 : 0x80131040)

소스 오류 :

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래 예외 스택 추적을 사용하여 식별 할 수 있습니다.

어셈블리로드 추적 : 다음 정보는 어셈블리를 Newtonsoft.Json로드 할 수없는 이유를 확인하는 데 도움이 될 수 있습니다 .

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

스택 추적 :

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

2
좋아, 나는 지금 일하기 위해 그것을 얻었다 고 생각한다. 내 컴퓨터에서 찾을 수있는 최신 버전이 아닌 모든 Newtonsoft.Json.dll을 삭제하고 NuGet의 최신 버전이 있는지 확인하고 빌드하여 bin 폴더의 최신 버전인지 확인하십시오. web.config 및 .csproj에 변경 사항을 남겨 두었습니다. 이제 또 다른 오류가 발생하여 작동해야합니다.
noobieDev

1
사람들이 질문이 해결되었음을 알 수 있도록 질문에 대한 답변을 추가 하시겠습니까? 그리고 그것을 해결책으로 표시하십시오
Per Hornshøj-Schierbeck

2
버전 8.0.2의 오늘 (2016 년 3 월 1 일) 에도이 문제의 일부 버전이 있습니다. 버전 6.0.0을로드하려고합니다. 내 솔루션에 6.0.0을 참조하는 파일이 없습니다. 버전 6.0.0이 없습니다. 내 솔루션 영역 어딘가에 .dll. 내 컴퓨터에 다양한 버전의 newtonsoft.json.dll 사본이 많이 있으며, 설치하고 싶지 않은 타사 소프트웨어가 사용합니다. 모든 사본을 제거하는 것 외에도이 전체 스레드에서 언급 된 모든 솔루션을 시도했지만 아무런 효과가 없었습니다.
Shavais

1
하나의 프로젝트에 대한 참조를 다른 프로젝트에 추가했을 때 newtonsoft-json 의이 오류 메시지가 발생했지만 두 문제 모두에서 동일한 .Net Framework를 만든 후에 프로젝트의 .Net Framework가 다릅니다. 그러나 왜 프레임 워크 오류 메시지 대신 newtonsoft-json 관련 오류가 표시되는지 이해할 수 없었습니다.
Sameer

1
사용하지 않더라도 모든 프로젝트에 동일한 버전의 Newtonsoft.Json을 설치하십시오.
rubStackOverflow 12

답변:


274

이를 해결하기 위해 다음 명령을 실행하고 결과를 확인하여 모든 프로젝트가 동일한 버전을 사용하도록했습니다.

update-package Newtonsoft.Json -reinstall

마지막으로 web.config에서 다음을 제거했습니다.

  <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>

모든 Newtonsoft.Json 패키지가 동일한 버전 인지 확인하려면 다음 과 같이 버전을 지정할 수 있습니다.

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
다시 설치 명령을 실행하면 나에게 도움이되었습니다. web.config를 수정할 필요가 없었습니다.
Keith

4
이 오류를 없애기 위해 <dependentAssembly> 태그를 추가해야했습니다.
Nicklas Møller Jepsen

3
-version을 제공해야했지만 -reinstall 플래그를 생략하여 제 경우에는 작동하도록했습니다.
anre

1
최신 버전 9.0.1을 사용하고 있지만 동일한 오류가 표시되었습니다. 그런 다음 csproj 파일의 버전을 확인했으며 9.0.0.0이며 web.config에 추가하고 문제가 해결되었습니다. 1. csproj의 버전이 web.config와 동일한 지 확인하십시오. 2. 버전 번호를주의하십시오. 실제 버전이 x.0.0.0 일 때 x.0.1이라고 말할 수 있습니다. x는 6 또는 9 일 수 있습니다. .
Eugene

7
VS2017에서 명령을 실행하려면 도구-> Nuget 패키지 관리자-> 패키지 관리자 콘솔
Rose

83

Newtonsoft.Json v6.0.3을 사용하고 있지만 Web.config 파일에서 수행해야 할 작업입니다.

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

6.0.3을 사용하고 있지만 넣어야했습니다. newVersion="6.0.0.0"

내 packages.config 파일에는 다음이 있습니다.

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
참고로 Newtonsoft.Json과 관련이있는 모든 것을 제거 / 제거 / 삭제 한 다음 Nuget을 사용하여 다시 설치했지만 여전히 위의 오류가 발생했습니다. 내가 제대로 작동하도록 할 수 있다고 언급 한 내용을 변경하기 전까지는 그렇지 않았습니다.
CraigV

이 문제가 발생하여 어셈블리 바인딩 로그 뷰어를 사용하여 문제를 진단했습니다. 어셈블리 바인더는 v6.0.3 Newtonsoft.Json.dll을 v6.0.0.0으로보고하므로 6.0.3으로 구성한 경우 리디렉션이 실패합니다.
Jason Slocomb

"노트"줄이 도움이됩니다. DLL이 말한 이후 bindingRedirect에서 newVersion으로 처음 9.0.1.19813을 사용했습니다. 이것이 내가 가진 것입니다 : <Reference Include = "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = MSIL"> <SpecificVersion> False </ SpecificVersion> </ Reference> <dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json"culture = "neutral"publicKeyToken = "30ad4fe6b2a6aeed"/> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0"newVersion = "9.0.0.0"/> </ dependentAssembly>
Mark Seefeldt

62

내 컴퓨터가 모든 위치에서 동일한 버전을 가지고 있고 프로젝트가 모두 동일한 참조 경로를 가리키고 있는지 확인한 후 다음을 시도했습니다. 또한 이전 버전의 바인딩이 자신의 것이고 현재 가지고있는 dll의 현재 버전에 바인딩되어 있는지 확인했습니다.

나는 엄격한 프레임 워크가있는 환경에서 일하고 프레임 워크 팀은 종종 다른 dll로 버전 관리를 화나게합니다.

이 문제를 해결 한 방법은 Visual Studio (2013) 내에서 패키지 관리자 콘솔을 실행하는 것이 었습니다. 거기에서 다음 명령을 실행했습니다.

update-package Newtonsoft.Json -reinstall

뒤에

update-package Newtonsoft.Json

이것은 모든 구성 파일과 관련 프로젝트 파일을 통해 업데이트되었습니다. 그것들을 모두 같은 버전의 dll로 강제합니다. 최신 버전을 얻기 위해 다시 업데이트하기 전에 처음 4.5 버전이었습니다.


나를 위해 문제를 해결 한 업데이트였습니다. 내 프로젝트는 Newtonsoft 버전 7.0으로 업데이트되었습니다.
id.ot

나를 위해 일했다. 이 작업을 수행 한 후 package.config 및 web.config 파일의 버전이 일치하는지 확인해야합니다.
TheValyreanGroup 2016 년

NuGet Package Manager Console에서 작업을 완료했을 때 저를 위해 일했습니다. 감사합니다!
Kbdavis07

25

같은 오류 메시지가 나타 났으며 언급 한 것처럼 Newtonsoft.Json.dll의 다른 버전이 참조 되었기 때문입니다.

내 MVC 솔루션의 일부 프로젝트는 해당 dll 버전 4에 NuGet 패키지를 사용했습니다.

그런 다음 Newtonsoft.Json 버전 6을 프로젝트 중 하나에 종속시키는 NuGet 패키지 (내 경우에는 Salesforce 용)를 추가했습니다. 그것이 저에게 문제를 일으켰습니다.

정리를 위해 솔루션의 NuGet Package Manager (도구 메뉴 또는 솔루션 마우스 오른쪽 단추 클릭)의 업데이트 섹션을 사용하여 솔루션 전체에서 Json.Net 패키지를 업데이트하여 모든 프로젝트에서 동일한 버전이되었습니다.

그런 다음 App Config 파일을 확인하여 바인딩 리디렉션 라인이 아래에서 선택한 버전으로 이동하는지 확인했습니다.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

DLL이 동일한 MVC 앱에 대해 서로 다른 버전의 Newtonsoft.Json에 대한 종속성을 갖는 경우 어떻게됩니까? 내가 붙어있는 곳입니다.
Jeremy Ray Brown

NuGet 패키지 관리자에서 통합 옵션을 사용하여 버전이 분리되지 않도록하십시오.
niico

17

좋아, 나는 지금 일하기 위해 그것을 얻었다 고 생각한다. 내 컴퓨터에서 찾을 수있는 최신 버전이 아닌 모든 Newtonsoft.Json.dll을 삭제하고 NuGet의 최신 버전이 있는지 확인하고 빌드하여 bin 폴더의 최신 버전인지 확인하십시오. web.config 및 .csproj에 변경 사항을 남겨 두었습니다. 이제 다른 오류가 발생하여 작동해야합니다.


2
컴퓨터의 모든 위치를 어떻게 찾습니까?
obaylis

팀 기반 서버로 프로젝트를 내 pc에 가져올 때도 오류가 발생했습니다. 내 솔루션에 newtonsoft의 참조를 추가하십시오. 작동하지 않습니다. 그런 다음 nuget 패키지 관리자를 통해 json.net (newtonsoft.json)을 설치하십시오. 잘 작동합니다.
Mohammad Sadiqur Rahman

bin 폴더 파일 이름 안에 있습니다-Newtonsoft.Json.dll이 파일을 삭제하고 패키지를 다시 설치하거나 더 낮은 버전을 설치하고 NuGet-Solution
maddy

7

내 web.config 에서이 부분을 주석 처리하여 내 문제를 해결했습니다.

<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>

물론 패키지 관리자 콘솔에서이를 수행하여 업데이트했는지 또는 올바른 버전인지 확인해야합니다.

update-package Newtonsoft.Json -reinstall

4

나는 Oleg의 단계를 시도했으며 그들은 같은 상황에서 일했습니다.

단계 :

  1. update-package Newtonsoft.Json -reinstall패키지 관리자에서 실행하십시오 .

  2. 당신의 삭제 bin숨겨진 파일을 볼 수 있도록하고 삭제하여 bin폴더에 있습니다.

  3. Visual Studio를 닫았다가 다시여십시오.

  4. 이제 프로젝트를 다시 실행하십시오. 나는 그것이 괜찮을 것이라고 믿는다!


4

web.config 파일에 아래 줄을 추가하여 문제를 해결할 수 있습니다.

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

3

제 경우에는 다음과 같은 문제였습니다.

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

TFS 폴더를 다시 매핑 할 때 문제가 발생했습니다.


3

실제로 도움이 된 것은 Resharper 빌드 를 끄고 프로젝트에서 VisualStudio Re-Build 옵션을 사용하는 것이 었습니다 .


당신은 그렇게 않았다 방법?
나오미

1
Resharper의 옵션에서 :
Tools-

얼마 전에 시험판을 설치 한 후 (약 한 달 정도는 생각합니다) 확장 기능도 비활성화했습니다. 도구에 표시되지 않으므로 괜찮습니다.
나오미

3

툴 >> NuGet 패키지 관리자 >> 솔루션 업데이트를위한 패키지 관리 Newtonsoft.Json에서 모든 솔루션을 최신 버전으로 업데이트


2

일종의 서브 버전으로 작업하는 경우 : 프로젝트를 삭제하고 다시 다운로드하면 나에게 도움이됩니다.


주변에 긴 방법하지만 난 나를 위해 일한 다른 솔루션으로이 일을 했어
마이크 Resoli을

2

MVC 5 프로젝트에 대한 테스트 프로젝트에서 동일한 문제가 발생했습니다. 이것은 MVC 5 프로젝트와 병합 한 후에 발생했습니다. 여기에 설명 된대로 Visual Studio 2012 업데이트를 설치하여 수정했습니다.Andre의 답변에서 에 하여 문제를 해결했습니다.

  • 비주얼 스튜디오에서
    1. 도구> 확장 및 업데이트
    2. 왼쪽의 아코디언 목록에서 "업데이트"를 선택하십시오.
    3. "제품 업데이트"를 선택하십시오.
    4. 최신 버전으로 업데이트

이 링크가 질문에 대한 답변을 제공 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다
abarisone

내 문제는이 솔루션 덕분에 수정되었습니다! 버전 8.0.1이 설치되어 있고 VS2013 업데이트 5로 업데이트하기 전까지는 작동하지 않았습니다.
Devin Prejean

2

왜 그런지 모르겠지만 제 경우에는 프로젝트에서 bin 폴더를 제거하더라도 프로젝트를 빌드 할 때 newtonsoft.json의 이전 버전을 복사하고 패키지 폴더에서 새 버전의 dll을 복사하여 지금 해결합니다.


나는 비슷한 문제가 있었다. 내 솔루션에는 테스트 프로젝트가 있습니다. 테스트 프로젝트는 bin에서 버전 9를 얻었지만 테스트하고있는 프로젝트의 버전은 12였습니다. 테스트의 bin 폴더에있는 프로젝트에서 테스트의 bin 폴더로 버전 12를 복사했습니다.
Josh Jay

2

어떤 경우에는 당신은 당신을 삭제 한 경우 BinObj폴더는이 문제를 해결합니다.


2

좋아, 할 일은이 긴 목록에 내 대답을 추가하는 것과 중복 질문을 만드는 것입니다 ...

2019 년에 .NET Core 3.0 (현재 미리보기)을 사용하여이를 얻는다면 해결책은 모든 프로젝트가 동일한 .NET Core 버전 (제 경우 3.0)을 대상으로하는지 확인하는 것입니다. 나는 2.1을 목표로하는 솔루션에 하나의 프로젝트가 있었고 나머지는 2.2 였기 때문에 아마도 2.2와 붙어 있었을 것입니다 ...

Newtonsoft.Json도 프로젝트에 설치하지 않았으며 자연스럽게 프로젝트에 추가해도 문제가 해결되지 않았습니다.

.NET 표준 클래스 라이브러리가 있거나 솔루션에 w / e가 있으면 동일한 버전 일 필요는 없지만 최신 버전이어야합니다. 예를 들어 .NET Standard 3.0이 아직 없기 때문에 .NET Standard 클래스 라이브러리는 2.2입니다.


1

확인 된 답변을 포함한 답변이 저에게 효과가 없었습니다.

해결책은 훨씬 간단했습니다. 먼저 BUS 레이어에서 참조를 제거했습니다. 그런 다음 프로젝트에서 dll을 삭제하고 (누락되었는지 확인한 다음) nuget packeges에서 JSON.NET을 다시 설치하십시오. 그리고 까다로운 부분은 "전원을 껐다 켜는 것"이었습니다.

방금 Visual Studio를 다시 시작했는데 작동했습니다!

따라서 가능한 모든 것을 시도해도 여전히 문제를 해결할 수없는 경우 Visual Studio를 껐다가 다시 켜면 도움이 될 수 있습니다.


2
나는 단순 이 풍자 라고 생각 합니다.
Worthy7


1

bin 폴더에서 Newtonsoft.json.dll의 하위 버전을 제거하고 Newtonsoft.json.dll V6.0.0.0을 추가하고 다음 web.config 요소를 제거하여 문제를 해결했습니다.

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

1

닷넷 코어와 동일한 문제가 발생했으며 NuGet 캐시를 지우면 문제를 해결할 수있었습니다.

파워 쉘을 열고 다음 명령을 입력하십시오.

dotnet nuget locals all --clear

그런 다음 Visual Studio를 닫고 다시 열어서 패키지 관리자 콘솔에 다음 명령을 입력했습니다.

Update-Package

NuGet은 이제 모든 패키지를 복원하고 너겟 캐시를 다시 채 웁니다.

그 후 Linux 컨테이너에서 내 dotnet 코어 webapi를 빌드하고 시작할 수있었습니다.


1

이것에 대한 내 문제를 해결 한 해결책은

goto reference-> Newtonsoft.json--goto 속성을 마우스 오른쪽 버튼으로 클릭하고 버전을 확인하십시오.

이 같은 버전이 있어야합니다

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

1

몇 시간 동안이 문제를 겪고 나서 ... 나는 다음을 수행했습니다.

web.config

<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

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

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

올바른 newVersion 및 oldVersion 번호를 입력하는 키는 프로젝트를 열고 References패키지가 해당 속성으로 이동하거나 클릭하십시오.alt + enter

Version내 경우에는 12.0.0.0실제로 12.0.3NuGet 관리를 탐색 할 때 있었던 섹션 을 찾을 수 있습니다.

따라서 참조 속성 (내 경우 12.0.0.0) 에서 패키지 버전을 선택해야합니다.

마지막으로, clean그리고 rebuild프로젝트 (당신은을 삭제 할 수 있습니다 binobj 이전 폴더).

다른 패키지 종속성 문제가 발생할 수 있습니다.


0

쉬운 단계. (1) 패키지 관리자에서 "update-package Newtonsoft.Json -reinstall"을 실행하십시오.

(2) 숨겨진 파일을보고 저장소 폴더를 삭제하여 저장소를 삭제하십시오.

(3) 비주얼 스튜디오를 닫고 다시여십시오.

(4) 이제 프로젝트를 다시 실행하십시오. 난 괜찮을 것 같아요


0

프로젝트 A (데스크톱 .exe)는 프로젝트 B (휴대용 .dll)를 나타냅니다. A & B에는 다른 버전의 JSON.Net이 있었으므로 로더 충돌이 발생했습니다. JSON.net의 모든 버전을 동일하게 만들면 효과가 있습니다. (이것은 위의 솔루션 중 일부가 수행하는 효과입니다. 왜 작동하는지 부르고 있습니다)


0

나는 최근에 더 오래된 프로젝트로 이것을 고투했습니다.

실제로 bin 폴더에있는 dll 버전을 확인한 후 문제를 추적했습니다.

dll 라이브러리 폴더에서 bin 폴더로 종속 어셈블리를 복사하는 빌드 후 스크립트가 있습니다. 너겟 전날의 일반적인 설정.

따라서 빌드 후 스크립트를 작성할 때마다 올바른 Json.net 버전을 이전 버전으로 바꿨습니다.


0

나는 정확히 똑같은 문제가 있었고 Visual Studio 13 기본 라이브러리는 4.5 였으므로 webconfig 파일에서 이에 대한 참조를 얻는 두 가지 솔루션이 있습니다. 그것은 최후의 수단이며 효과가 있습니다.

오류 메시지는이 위치 /Projects/foo/bar/bin/Newtonsoft.Json.DLL에 문제가 있음을 나타냅니다. DLL이있는 곳! 기본 속성 확인은 4.5.0.0 또는 그와 비슷하다는 것을 알려주므로 webconfig를 4.5로 올려 4.5를 사용하도록 변경했습니다.


0

이 옵션들 중 어느 것도 나를 위해 효과가 없었습니다.

테스트> 테스트 설정> * .testrunconfig

나는 새로운 줄을 추가해야했다

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

경로와 버전이 설정에 맞는지 확인하십시오.


0

나는 같은 문제가 있었다. 웹 API 프로젝트를 만든 다음 .net 4.5.1에서 .net 4.6.1로 업그레이드했습니다. IDE를 닫고 IIS를 중지하고 C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ dir의 내용을 삭제하면 문제가 해결되었습니다.

HTH


0

이 문제는 NuGet 패키지를 새로 고치거나 프로젝트에서 "청소"를 수행하여 해결되지 않았습니다. "obj"폴더를 수동으로 지워서 해결되었습니다.


0

다음은이 문제에 대한 해결책입니다 .appconfig 또는 packageconfig의 버전 번호가 참조의 참조 버전과 동일한 지 확인하십시오. 여기를 참조 하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.