>source

Visual Studio는 참조가 포함 된 웹 사이트 외에 다른 프로젝트를 구축 할 때 이전 버전의 Nuget 패키지 파일과 함께 내 프로젝트 참조와 NuGET 패키지 파일로 구성된 NewTonsoft.json.dll의 올바른 버전을 덮어 씁니다.

확인. 다음은 시나리오입니다.

백엔드 서비스와 웹 사이트가있는 솔루션이 있습니다. 웹 사이트는 .NET 4.5에서 실행 중이며 NuGet으로 구성되어 NuGet으로 NewTonsoft.json.dll 버전 6.0.1을 가져옵니다.

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

web.config 파일에 dependenassembly 바인딩을 추가합니다.

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

문제 없이이 웹 사이트를 구축하고 실행할 수 있습니다.

최근에 .NET 4.0에서 .NET 4.5에서 .NET 4.5까지 모든 클래스 라이브러리 및 백엔드 서비스를 업데이트했습니다. 업데이트 후 클래스 라이브러리 중 하나를 작성하거나 백엔드 서비스를 실행 /디버그 할 때마다 웹 사이트가 작동하지 않습니다.

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)

클래스 라이브러리 중 하나를 재구성하거나 백엔드 서비스를 Visual Studio에서 실행 /디버 딩 /디버깅하는 경우 NewTonsoft.json.dll은 이전 버전의 파일 -버전 4.5.11로 덮어 씁니다. 명시 적 DependentAssembly 바인딩 때문에, 언제든지 웹 사이트에 액세스 할 수 있습니다.

이는 방금 하나 또는 백엔드 서비스 또는 웹 사이트 중 하나를 실행하고자하지만 내 응용 프로그램을 제대로 실행하려면 함께 실행해야합니다. 그러나이 오류 때문에 웹 사이트 또는 웹 사이트가 충돌하는 것과 동시에 백엔드 서비스가 실행될 수 없습니다.

Visual Studio는 DLL을 덮어 쓰지 못하게하는 방법은 무엇입니까?

는 전체 솔루션을 가로 질러 6.0.1에 대한 기준 세트가 있음을 유의하십시오 (즉, 은 어디서나 4.5.11 ~ 4.5.11). 그리고 웹 사이트에서는 newtonsoft.json.dll에 대한 true와 'specific 버전'으로 설정된 '로컬 복사'를 가지고 있습니다.

빌드에 대한 자세한 로깅을 활성화하고 "잘못된"버전의 정확한 원본을 추적하는 것이 좋습니다.

alex.b2021-05-09 03:51:36

똑같은 문제! NuGet 업데이트 OWIN, ID 및 EF를 업데이트 한 후 상황에서 나 자신을 발견했습니다. 하나의 프로젝트를 올바르게 구축하는 동안 VS2013은 이전 버전의 NewTONSOFT.JSON의 다른 프로젝트에 삭제되며 이전 버전은 GAC와 동일합니다.

nsb2021-05-09 03:51:36
  • 이전 database : Cassandra가 존재하지 않거나없는 경우 삭제합니다
  • 다음 c# : 키보드. Focus가 WPF의 텍스트 상자에서 작동하지 않습니다