[asp.net] 파일 또는 어셈블리 ‘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 작성 등)에 대해 운이 없었습니다. 나는 이전 버전의 Newtonsoft로 돌아 가야했습니다. 버전 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. 시작 프로젝트를 변경 한 경우 다시 시작하십시오.