설명 버전 System.Diagnostics.DiagnosticSource에 System.IO.FileLoadException를 생성 System.Net.Http NuGet 패키지 4.3.0. 참조하는 응용 프로그램은 "shared.dll는"System.Net.Http NuGet 패키지 4.3.0 참조 문제의 4.0.0.0 참조
System.IO.FileLoadException
파일이나 어셈블리 'System.Diagnostics.DiagnosticSource를로드 할 수 없습니다 , 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken 실패 = cc7b13ffcd2ddd51 '또는 해당 종속성 중 하나를 선택하십시오. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT에서 예외 : 0x80131040) System.Net.Http.WinHttpHandler.SendAsync에서
(...)
우리는 위의 실패에 대한 다음과 같은 원인에 와서이 문제를 조사 후 :
을- System.Net.Http v 4.3.0에 대한 패키지 정보 페이지는 System.Diagnostics.DiagnosticSource v 4.3.0 이상의 종속성을 나타냅니다. 이 패키지는 System.Net.Http v 4.3.0이 프로젝트에서 참조 될 때 자동으로 다운로드됩니다.
- System.Net.Http의 NuGet 패키지 v 4.3.0에는 실제로 System.Net.Http.dll v 4.1.1.0이 포함되어 있습니다 (2017 년 1 월 8 일 기준).
- NuGet System.Diagnostics.DiagnosticSource 패키지 v 4.3.0에는 실제로 System.Diagnostics.DiagnosticSource v 4.0.1.0이 포함되어 있습니다 (2017 년 1 월 8 일 기준). 4.1.1.0 참조 System.Diagnostics.DiagnosticSource의 V 버전
- System.Net.Http. 4.0.0.0
- System.Diagnostics.DiagnosticSource의 V. 4.0.0.0 다운로드 한 DLL이 V 4.0 V에 정확히 일치하지 않습니다 .1.0.
- 강력한 이름의 라이브러리 참조 버전이 정확히 일치하지 않으면 .NET 런타임에서 참조 된 어셈블리를 찾으려고 시도합니다. 그렇지 않으면 라이브러리로드 예외가 생성됩니다.
- 의 app.config 옵션 : 또한 다음 remark
있습니다 몇 해결 방법을 참조 어떤에 대한의 app.config에 binding redirection으로 (? 우리가 그와 함께 가야하는 범위) 호환 버전을 선언 "shared.dll"- 참조하는 응용 프로그램.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> </dependentAssembly> </assemblyBinding>
-
버전 4.0.0.0에
- 강제 System.Diagnostics.DiagnosticSource.dll을 :. 는 System.Diagnostics.DiagnosticSource의 V 4.0 NuGet 참조를 추가합니다. 0.0을 System.Net.Http를 참조하는 프로젝트에 추가하여 dll 버전 4.0.1.0의 자동 다운로드를 선점합니다. 이 옵션은 NuGet 종속성을 자동으로 업데이트하는 기능을 잃어 버리지 만 구성이 필요없는 응용 프로그램의 배포를 만듭니다.
적절한 문제 해결 방법은 앞서 말한 NuGet 패키지의 불일치를 패키지 소유자가 수정하는 데 있습니다. 소스에서 고정 된 경우 System.Net에 대한 해결 방법이 없습니다.HTTPS 패키지 소비 코드가 필요합니다.
질문 :
System.Net.Http V 4.3.0 패키지는 이전의 정확한 버전 패키지 4.1.1가있는 동안 불일치 System.Net.Http.dll 브이 4.1.1을 포함 왜- ?
- 앞서 언급 한 2 가지 해결 방법 중 하나를 계속 진행해야합니까?
- 어느 것이 더 낫습니까?
- 또는 문제의 다른 해결책이 있습니까?
- 또는 : 불일치를 수정하는 NuGet 패키지가 임박한 업데이트가 있습니까?
감사합니다.
.NET Framework 4.6 프로젝트에'System.Net.Http' 4.3.0 설치를 시도해 본 결과 바인딩 리디렉션이 자동으로 생성되었습니다. 자세한 내용은 [dotnet/corefx] (https://github.com/dotnet/corefx/issues/new) GitHub 문제 추적기에서이 질문을 해보십시오. –
감사합니다. GitHub를 통해 질문 할 것입니다. 제거하고 참조를 다시 추가 (VS 20015) 및 app.config 변경되지 않은 (바인딩 리디렉션 없음) 있었다. 우리의 솔루션은 단일 어셈블리 솔루션보다 복잡합니다. 하나의 지붕 아래에 여러 실행 가능 및 공유 라이브러리 어셈블리가 포함되어 있습니다. –
@Joel Verhagen : https://github.com/dotnet/corefx/issues/15031에서 티켓 열기 –