파일 또는 어셈블리 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'를로드 할 수 없습니다
오류가 발생합니다
System.IO.FileLoadException : 파일 또는 어셈블리 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)
CI 구축을 위해
내가 시도한 솔루션
<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 –reinstall Newtonsoft.Json
.
최신 정보
나는 원래 이것을 주석으로 게시했지만 @OwenBlacker가 제안한대로 여기에 넣을 것입니다.
이 작업을 수행 한 후에도 여전히 오류가 발생하면 결국 파일 <dependentAssembly>
에서 Json.Net 섹션을 삭제했습니다 .config
. 없는 경우 다시 설치하면 다시 삭제해야합니다. 패키지 자체에 정상적인 해결책이있을 때 까지이 수동 단계가 필수입니다.
참고 :이 작업을 수행하기 전에 아래 설명을 읽으십시오.
르네의 의견에 따라 아래의 주의 대답에 게시 명령이 솔루션의 모든 프로젝트에서 패키지를 다시 설치됩니다. 따라서 여러 프로젝트에서 Newtonsoft.Json 패키지를 사용하고 다른 버전을 사용하는 경우 위 명령을 실행하면 원하지 않는 결과가 발생할 수 있습니다.
Newtonsoft.Json v4.5 버전에 문제가있는 모든 사람에게 web.config 또는 app.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-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
중요 : configuration
구성 파일 의 태그에 네임 스페이스 속성이 없는지 확인하십시오 ( https://stackoverflow.com/a/12011221/150370에서 제 안됨). 그렇지 않으면 assemblyBinding
태그가 무시됩니다.
요점은 구성 파일에서 올바른 버전을 참조하는 것입니다.
단계;
1- 프로젝트 참조 속성에서 Newtonsoft.Json.dll의 버전이 패키지 폴더의 버전인지 확인하십시오 (예 : 광산은 7.0.1이고 참조 버전은 7.0.0.0입니다)
2- 예외에서 프로젝트가 당신에게 기대하는 것을보십시오 (광산은 6.0.0.0입니다)
3- 설정 파일에 종속 어셈블리를 원하는대로 추가하십시오.
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
</dependentAssembly>
나는 여기에 제시 된 솔루션 (운용 제거, 재설치, 참조 삭제, bindingRedirects 작성 등)에 대해 운이 없었습니다. 뉴턴 소프트의 이전 버전으로 돌아 가야했습니다. 버전 5.0.6은 이전에 작동 했으므로 시도해 보았습니다. 패키지 콘솔에 다음 두 명령을 입력해야했습니다.
uninstall-package newtonsoft.json -force
install-package newtonsoft.json -version "5.0.6"
-force
제거를 강제 실행하려면 첫 번째 명령 의 옵션이 필요합니다. 다른 어셈블리와의 종속성으로 인해 설치가 제거되지 않습니다.
이 바인딩 리디렉션을 .config 파일에 추가하는 문제를 해결했습니다.
<runtime>
. . .
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
버전 4.5.0.0을 찾을 수 없다는 오류 메시지가 표시되며, 현재 버전의 Newtonsoft.Json은 6.0.0.0이므로 리디렉션은 4.5가 아닌 6.0에서 6.0으로 이동해야합니다.
나는 당신이 잘못된 목표를 가리키고 있다고 생각합니다. 6.0 대신 4.5로 변경하십시오.
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
이 작동합니다.
이 좌절스러운 문제를 해결하기 위해 며칠을 보냈습니다. 나는 웹에서 찾을 수있는 거의 모든 것을 시도했다. 마지막 으로이 오류는 하나의 솔루션에서 다른 대상 .Net 프로젝트 버전 (4.5 및 4.5.1)에 의해 (내 경우와 같이) 발생할 수 있음을 발견했습니다. 다음 단계는 나를 위해 수정했습니다.
- 솔루션에있는 모든 프로젝트의 .Net 버전을 다시 확인하십시오. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고로 이동하십시오
Properties
.
가능하면 모든 프로젝트에 대해 동일한 .Net 버전을 설정하십시오 . 적어도 시작 프로젝트를 변경하려고 시도하지 않으면 (이것이 문제의 원인이었습니다).
Newtonsoft.Json
솔루션에서 모든 팩을 제거하십시오 .uninstall-package newtonsoft.json -force
Newtonsoft.Json
모든packages.config
파일의 모든 버전을 다음 과 같이 업데이트하십시오.<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
다음을 사용
Newtonsoft.Json
하여 "Package Manager Console"에서 다시 설치하십시오 .install-package newtonsoft.json
솔루션 재 구축
(선택 사항) 7. 시작 프로젝트를 변경 한 경우 다시 시작하십시오.
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
나를 위해 트릭을 했어 :)
프로젝트 참조에서 Newtonsoft.Json 어셈블리를 제거하고 다시 추가하십시오. 실수로 dll을 삭제하거나 교체했을 수 있습니다.
그래서 나를 위해이 오류에 대한 참조 추가에 의해 발생 된하는 WebApi REST 서비스 클라이언트를 작성했다 System.Net.Http
하고 System.Net.Http.Formatting
내가 추가해야하는 경우, 수동으로 참조 추가를 통해 어셈블리를 Microsoft.AspNet.WebApi.Client
통해 패키지 NuGet을 . 다른 질문에 대한이 답변 도 참조하십시오 .
동일한 솔루션에서 여러 프로젝트를 사용하고 다른 하나의 라이브러리를 확인하면 모든 프로젝트에 동일한 버전의 Newtonsoft가 있습니다.
솔루션에 두 가지 버전의 JSON.NET 라이브러리가 있습니다. 이 문제를 해결하려면 최신 버전으로 업그레이드해야합니다. 이 단계를 따르세요:
1-Open 솔루션 탐색기 2- 솔루션 이름을 마우스 오른쪽 버튼으로 클릭 3- 솔루션 용 Nuget 패키지 관리를 선택합니다 .4 메뉴에서 업데이트 선택 5-JSON.NET 패키지 업데이트
문제가 해결됩니다.
CI 머신에 올바른 버전을 배치하십시오.
이것은 어셈블리 로더 Newtonsoft.Json
가 프로젝트에서 생성 한 참조와 일치하지 않는 다른 버전의 어셈블리를 찾았 음을 나타냅니다 . 어셈블리를 올바르게로드하려면 컴파일 된 코드와 함께 어셈블리를 배포하거나 대상 컴퓨터 (예 : GAC)에 올바른 버전의 어셈블리를 설치해야합니다.
대안 : 구성이 올바른 파일에 있는지 확인하십시오.
현재 솔루션을 유지하고 다른 버전으로 어셈블리를로드하려면 게시 한 구성이 올바른 .config
파일 에 있는지 확인하십시오 . xpto.dll.config
응용 프로그램에서로드 한 DLL 은 항상 실행중인 응용 프로그램의 구성 파일을 사용 하지 않습니다 .
일반적으로 바인딩 리디렉션을 추가하면이 문제가 해결되지만 효과가 없었습니다. 벽에 머리를 대고 몇 시간을 보낸 후 web.config에 xmlns 속성이 문제를 일으키는 것을 알았습니다. Web.config의 구성 노드에서 xmlns 특성을 제거한 후 바인딩 리디렉션이 예상대로 작동했습니다.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
나를 위해 작동합니다 .... 그냥 당신이 사용중인 버전을 newVersion ie (newVersion = "7.0.0.0")
솔루션을 닫습니다.
열기 packages.config
및 *.csproj
텍스트 편집기와 가지고있는 줄을 삭제 Newtonsoft.Json
전의:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>
또는 <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
솔루션을 다시 열고 Newtonsoft.Json을 다시 설치하십시오. Install-Package Newtonsoft.Json
그것은 나를 위해 작동합니다.
우리는 당신이 언급 한 것과 똑같은 문제가있었습니다. 우리는 nunit을 사용하여 CI를 통해 테스트를 실행하고 nunit에는 tests.nunit이라는 파일을 실행하는데,이 파일에는 실행할 테스트 dll 픽스처 목록이 설명되어 있습니다.
각 테스트 픽스처에는 자체 구성 파일이 있지만 "tests.nunit"파일을 통해 실행하면 바인딩 리디렉션이 무시되는 것 같습니다. 해결책은 바인딩 리디렉션을 "tests.nunit"파일 옆에있는 새 구성 파일 "tests.config"에 추가하는 것입니다.
나는 같은 유형의 문제가 있습니다. 또한 다음을 수행하여 해결했습니다. 도구 > NuGet 패키지 관리자 및 패키지 관리자 콘솔 선택으로 이동 하십시오 . 마지막으로 다음 두 명령을 실행하십시오. :)
- 제거 패키지 newtonsoft.json -force
- 설치 패키지 newtonsoft.json
서버에서 web.config 파일을 업데이트해야합니다. Nuget 설치시 NewtonSoft를 설치할 때이 코드를 포함하여이 파일을 업데이트하십시오
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<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>
필자의 경우 주 프로젝트는 여전히 프로젝트에 더 이상 존재하지 않는 이전 버전의 Newtonsoft.Json 을 참조하고 있습니다 (노란색 느낌표로 표시). 참조를 제거하면 문제가 해결되었으며 bindingRedirect가 필요하지 않았습니다.
나는 7.0.0.0 버전과 똑같은 문제를 겪었고, 문제를 일으키는 lib는 Microsoft.Rest.ClientRuntime 이었다. newtonsoft.json (7.0.0.0)의 올바른 버전이 설치되었습니다.
설정 파일에서 6.0.0.0에서 7.0.0.0 (Kadir Can에서)으로 위의 리디렉션을 적용 하여이 문제를 해결했습니다.
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />
----> 아무 것도 바꾸지 않고 며칠 후에 같은 오류가 다시 발생했습니다. 버전 6.0.0.0을 설치했는데 7.0.0.0으로 업데이트되었습니다. 지금 제대로 작동합니다.
Newtonsoft.Json Newtonsoft 속성 의 버전을 확인하십시오.
그런 다음 웹 구성 (이 경우 8.0.0.0) 웹 구성 에 해당 버전을 추가해야합니다
필자의 경우 어셈블리를 다운로드하고 프로젝트에 참조를 추가 한 후 프로젝트에 참조를 추가하기 전에 DLL을 '차단 해제'하여이 문제를 해결했습니다.
Windows 탐색기를 사용하여 DLL 위치를 찾아 DLL을 마우스 오른쪽 단추로 클릭 한 다음 '속성'을 선택하십시오. 탭 중 하나에 '차단 해제'버튼이 있으며 참조를 추가하면 어셈블리가 올바르게로드됩니다.
.Net 4.5에 NewtonSoft .dll 파일을 추가하는 실수를했습니다.
내 주요 프로젝트 는 4.5 였지만 솔루션에 추가 프로젝트를 추가했을 때 .Net 2.0 프로젝트로 이상하게 추가했습니다 ... 이와 함께 NewtonSoft의 4.5 dll을 사용하려고 시도했을 때 "Newtonsoft.Json cann '찾을 수 없음'오류입니다.
해결책은 물론이 새로운 프로젝트를 .Net 2.0에서 4.5로 변경하는 것이 었습니다.
위에서 도움이 된 것은 없지만 실제로 수정 한 것은 다음과 같습니다.
- 솔루션의 모든 app.config 파일에서 app.config의 모든 종속성 바인딩을 제거하십시오.
- "Package Manager Console" 에서 다음 명령을 실행하십시오.
Get-Project-모두 | 추가 바인딩
- 재건
참조 : http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Nuget 패키지 관리를 선택하고 검색 상자에 newtonsoft를 입력하고 최신 버전을 설치하십시오. 그런 다음 앱을 실행하십시오.
나는 같은 오류에 직면하여 몇 시간 동안 고생했습니다. 웹 API 프로젝트에 Newtonsoft.json 및 다른 UnitTest 프로젝트를 사용하는 웹 API 프로젝트가 있습니다. 단위 테스트 프로젝트에는 Newtonsoft.json 참조도 필요했습니다. 그러나 링크를 추가하면 위의 예외가 발생했습니다.
마지막으로 단위 테스트 프로젝트의 app.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>
또 다른 교활한 문제는 요소가 다른 dependentAssembly 요소에 대한 구성이 올바르지 않으면 바인딩 리디렉션이 자동으로 실패 할 수 있다는 것입니다.
각 요소 아래에 하나의 요소 만 있어야합니다.
경우에 따라 VS는 다음을 생성합니다.
<dependentAssembly>
<assemblyIdentity ...
<assemblyIdentity ...
</dependentAssembly>
대신에
<dependentAssembly>
<assemblyIdentity ...
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity ...
</dependentAssembly>
이것이 문제라는 것을 깨닫기 위해 오랜 시간이 걸렸습니다!
아래 섹션은 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-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
로컬로 오류가 사라지고 여전히 서버에 나타나는 경우 나와 함께 작동하는 해결책은 bin 폴더와 packages.config 및 web.config를 삭제하고 이러한 파일을 다시 업로드하는 것입니다
'Programing' 카테고리의 다른 글
자바 객체 대 객체 매핑을위한 도구? (0) | 2020.04.21 |
---|---|
API를 구현할 때 블록에서 자체 캡처를 피하려면 어떻게해야합니까? (0) | 2020.04.21 |
Javascript 날짜 객체 timeObject에 10 초 추가 (0) | 2020.04.21 |
Unix에서 패턴을 기반으로 여러 파일 이름 바꾸기 (0) | 2020.04.20 |
명령 줄 인수를 구문 분석하는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.20 |