programing

파일 또는 어셈블리 'Newtonsoft'를 로드할 수 없습니다.Json, 버전=4.5.0.0, Culture=중립, PublicKey토큰=30ad4fe6b2a6aed'

starjava 2023. 4. 22. 08:22
반응형

파일 또는 어셈블리 'Newtonsoft'를 로드할 수 없습니다.Json, 버전=4.5.0.0, Culture=중립, PublicKey토큰=30ad4fe6b2a6aed'

에러가 표시되다

System.IO.FileLoadException : 파일 또는 어셈블리 'Newtonsoft'를 로드할 수 없습니다.Json, 버전=4.5.0.0, Culture=중립, PublicKey토큰=30ad4fe6b2a6aed' 또는 그 종속성 중 하나.찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다(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>의 내 from 의 섹션.config파일을 다시 설치하면 파일이 없는 경우 다시 불러오고 삭제가 필요한 것 같습니다.패키지 자체에 정상적인 해결 방법이 있을 때까지는 이 수동 절차가 필수입니다.

주의: 이 작업을 수행하기 전에 아래 의견을 읽어보십시오.

아래의 René의 코멘트에 따르면 답변에 게재된 명령어는 솔루션 내의 모든 프로젝트에 패키지를 재설치합니다.뉴턴소프트를 사용하면Json 패키지는 여러 프로젝트에서 서로 다른 버전을 사용할 수 있으며, 위의 명령을 실행하는 것만으로 원치 않는 결과가 발생할 수 있습니다.

뉴턴소프트와 문제가 있는 모든 사람에게.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>

중요: 다음 사항을 확인합니다.configurationconfig 파일의 tag에는 이름 공간 속성이 없습니다(https://stackoverflow.com/a/12011221/150370) 참조).그렇지않으면,assemblyBinding태그는 무시됩니다.

컨피규레이션파일에서 올바른 버전을 참조하는 것이 포인트입니다.

순서

1- 사용 중인 Newtonsoft의 버전을 확인하십시오.프로젝트 레퍼런스 속성의 Json.dll 패키지 폴더 내의 버전이 무엇이든 상관없습니다(예를 들어 내 버전은 7.0.1, 레퍼런스 버전은 7.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>

여기에 제시된 솔루션(설치, 재설치, 참조 삭제, binding Redirects 작성 등) 중 어느 것도 사용할 수 없었습니다.나는 뉴턴소프트의 이전 버전으로 돌아가야 했다.버전 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>

현재 버전의 Newtonsoft인 버전 4.5.0.0을 찾을 수 없다는 오류 메시지가 표시됩니다.Json은 6.0.0이므로 리다이렉트는 4.5에서 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>

이거면 될 거야.

나는 이 짜증나는 문제를 해결하기 위해 며칠을 보냈다.인터넷에서 찾을 수 있는 건 거의 다 해봤어요.마지막으로 이 에러는 (내 경우와 마찬가지로) 다른 타겟에 의해 발생할 수 있음을 알게 되었습니다.프로젝트 버전(4.5 및 4.5.1)을 하나의 솔루션으로 통합합니다.고함을 지르며 해결했습니다.

  1. 한 번 솔루션에 포함되는 모든 프로젝트의 넷 버전.를 오른쪽 하여 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★Properties.

여기에 이미지 설명 입력

  1. 가능하면 동일하게 설정합니다.모든 프로젝트의 넷 버전.적어도 스타트업 프로젝트의 변경은 시도하지 않는 경우(이것이 문제의 원인입니다).

  2. " " " 를 삭제합니다.Newtonsoft.Json팩을 사용할 수 있습니다.

    uninstall-package newtonsoft.json -force

  3. 업데이트 ★★★★Newtonsoft.Json의 모든 버전packages.config를 들어 「」, 「」와 파일

    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />

  4. 「」를 재인스톨 .Newtonsoft.Json" Manager ConsolePackage Manager Console"로 합니다.

    install-package newtonsoft.json

  5. 솔루션 재구축

(임의) 7 。시작 프로젝트를 변경한 경우 다시 반환

uninstall-package newtonsoft.json -force
install-package newtonsoft.json

나를 위해 묘기를 부렸다 :)

동일한 솔루션에서 여러 프로젝트를 사용하고 다른 하나의 체크 라이브러리를 사용하는 경우 모든 프로젝트는 동일한 버전의 Newtonsoft를 가집니다.제이슨

Newtonsoft를 제거합니다.프로젝트 참조의 Json 어셈블리를 다시 추가합니다.실수로 dll을 삭제하거나 교체했을 수 있습니다.

클라이언트를에, 이는 WebApi REST 에 를 WebApi REST 에 했기 때문에 했습니다.System.Net.Http ★★★★★★★★★★★★★★★★★」System.Net.Http.FormattingAdd Reference를 Reference를 할 수 .Microsoft.AspNet.WebApi.ClientNuGet 경유 패키지다른 질문에 대한답변도 참조하십시오.

JSON은 2가지 버전이 있습니다.솔루션의 NET 라이브러리.이 문제를 해결하려면 최신 버전으로 업그레이드해야 합니다.다음의 순서에 따릅니다.

1-솔루션 탐색기 열기 2-솔루션 이름 오른쪽 클릭 3-솔루션용 Nuget 패키지 관리 4-메뉴 5-Update JSON에서 업데이트 선택NET 패키지

이것으로 문제가 해결됩니다.

link: 파일 또는 어셈블리의 'Newtonsoft'로드할 수 없습니다.Json, 버전=7.0.0, Culture=중립, PublicKey토큰=30ad4fe6b2a6aed' 또는 그 종속성 중 하나

CI 머신에 올바른 버전 도입

은 조립 의 '어셈블리 로더'를 줍니다.Newtonsoft.Json어셈블리가 프로젝트에서 만든 참조와 일치하지 않습니다.어셈블리를 올바르게 로드하려면 컴파일된 코드와 함께 어셈블리를 나란히 배치하거나 올바른 버전의 어셈블리를 대상 머신(GAC)에 설치해야 합니다.

또는 구성이 올바른 파일에 있는지 확인하십시오.

솔루션을 는, 「」에 것을 ..config 파일이라는 게 거 마세요.xpto.dll.config응용 프로그램에 의해 로드된 DLL은 항상 실행 중인 응용 프로그램의 Configuration파일을 사용합니다.

일반적으로 바인딩 리다이렉트를 추가하면 이 문제가 해결되지만 나에게는 작동하지 않았습니다.몇 시간 동안 벽에 머리를 부딪친 후 web.config에 문제를 일으키는 xmlns 속성이 있음을 알게 되었습니다.Web.config 설정 노드에서 xmlns 속성을 삭제한 후 바인딩 리다이렉트가 예상대로 동작했습니다.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx

<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(newVersion="7.0.0.0")에 넣기만 하면 됩니다.

같은 에러가 발생하고 있으며, 아래의 코드 에러를 추가하여 생산 시 해결되었습니다.

답변이 너무 늦었지만 누군가를 도울 수 있습니다.

    <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>
        </assemblyBinding>
    </runtime>

클로즈 솔루션.

.packages.config ★★★★★★★★★★★★★★★★★」*.csproj텍스트 편집기를 사용하여 모든 행을 삭제합니다.(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" />

뉴턴 소프트Json byInstall-Package Newtonsoft.Json

저는 좋아요.

말씀하신 것과 똑같은 문제가 있었습니다.CI를 통해 테스트를 실행하기 위해 nunit을 사용하고 있으며 실행할 테스트 dll 고정 장치의 목록을 설명하는 tests.nunit이라는 파일을 실행하고 있습니다.

각 테스트 픽스쳐에는 자체 설정 파일이 있지만 "tests.nunit" 파일을 실행하면 바인딩 리다이렉트는 무시되는 것으로 보입니다.해결책은 바인딩 리다이렉트를 "tests.nunit" 파일 옆에 있는 새로운 구성 파일 "tests.config"에 추가하는 것이었습니다.

저도 같은 문제가 있어요.그리고 다음 방법으로 문제를 해결했습니다.[ Tools ] > [ NuGet Package Manager ]으로 이동하여 [Select Package Manager Console]를 선택합니다.마지막으로 다음 2개의 명령어를 실행합니다).

  1. uninstall-module newtonsoft.json - force
  2. install-module newtonsoft.json

서버에서 web.config 파일을 업데이트해야 합니다.nuget 설치 시 Newton Soft가 이 코드를 포함하여 이 파일을 업데이트합니다.

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

뉴턴소프트 버전을 확인해 보세요.Json Newtonsoft 특성

그런 다음 웹 구성(이 경우 8.0.0)에 해당 버전을 추가해야 합니다.

Newton Soft .dll 파일을 에 추가하는 실수를 했습니다.넷 4.5

메인 프로젝트는 4.5였는데 솔루션에 추가 프로젝트를 추가하자 이상하게 가 추가되었습니다.Net 2.0 프로젝트...뉴턴소프트의 4.5dll을 사용하려고 했더니 '뉴턴소프트'가 나왔어요Json을 찾을 수 없습니다." 오류입니다.

해결책(물론)은 이 새로운 프로젝트를 에서 변경하는 것이었습니다.넷 2.0~4.5

나는 같은 오류에 직면했고 몇 시간 동안 그것을 해결하려고 애썼다.웹 API 프로젝트에는 Newtonsoft.json을 사용하는 웹 API 프로젝트와 다른 UnitTest 프로젝트를 사용했습니다.유닛 테스트 프로젝트에는 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>

제 경우, 주요 프로젝트는 여전히 뉴턴소프트의 이전 버전을 참조하고 있었습니다.프로젝트에 존재하지 않는 Json(노란색 느낌표로 표시)참조를 삭제하면 문제가 해결되었습니다.bindingRedirect는 필요 없습니다.

버전 7.0.0.0에서도 같은 문제가 발생했는데 문제의 원인이 되고 있는 lib는 Microsoft였습니다.rest.ClientRuntime은 nugget에서 올바른 종속성 관리(Newtonsoft.json(7.0.0)의 올바른 버전이 설치됨)에도 불구하고 잘못된 버전의 Newtonsoft.json(6.0.0)을 참조하고 있었습니다.

위의 리다이렉션을 6.0.0에서 7.0.0으로(Kadir Can에서) 적용하여 이 문제를 해결했습니다.

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

----> 며칠 후 아무것도 변경하지 않고 다시 같은 에러가 발생하였습니다.버전 6.0.0.0n을 설치했더니 7.0.0.0으로 업데이트되어 정상적으로 동작합니다.

nuget을 통한 newtonsoft 패키지 재설치가 되지 않았습니다.JsonConvert에 수동으로 전화해야 했어요.이 문제를 우회하려면 DeserializeObject

나는 변했다

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
MyObject data = await response.Content.ReadAsAsync<MyObject>();

위해서

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
string jsonStr = await response.Content.ReadAsStringAsync();
MyObject data = JsonConvert.DeserializeObject<MyObject>(jsonStr);

제 경우 어셈블리를 다운로드하여 프로젝트에 참조를 추가한 후 프로젝트에 참조를 추가하기 전에 DLL을 '차단 해제'함으로써 이 문제를 해결했습니다.

Windows 탐색기를 사용하여 DLL 위치를 찾아 DLL을 마우스 오른쪽 버튼으로 클릭한 다음 '속성'을 선택합니다.탭 중 하나에 '차단 해제' 버튼이 있으며, 그런 다음 참조를 추가하면 어셈블리가 올바르게 로드됩니다.

위에서 아무것도 도움이 되지 않았지만, 실제로 그것을 고친 것은 다음과 같습니다.

  1. app.config의 모든 종속성 바인딩을 제거합니다(솔루션의 모든 app.config 파일에서).
  2. "Package Manager Console"에서 다음 명령을 실행합니다.

Get-Project - All | Add-BindingRedirect

  1. 재구축

참고 자료: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx

프로젝트를 우클릭하여 [Manage Nuget packages]를 선택하고 검색 상자에 newtonsoft 라고 입력한 후 최신 버전을 설치합니다.그런 다음 앱 실행

또 다른 중대한 문제는 바인딩 리다이렉트가 다른 dependent Assembly 요소에 잘못된 설정이 있는 경우 자동으로 실패할 수 있다는 것입니다.

각 요소 아래에 하나의 요소만 있어야 합니다.

경우에 따라 VS가 다음을 생성합니다.

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

대신

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

이게 문제라는 걸 깨닫는데 오랜 시간이 걸렸어!

언급URL : https://stackoverflow.com/questions/22507189/could-not-load-file-or-assembly-newtonsoft-json-version-4-5-0-0-culture-neutr

반응형