2017-12-08 11 views
1

새로운 .Net 4.6.2 단위 테스트 프로젝트를 시작했습니다. 정말 이상한 일 이었기 때문에 나는 put on Github이라는 단순화 된 프로젝트로 재현하기 시작했습니다. VS에서 Nuget 복원의 압축을 풀고 실행하십시오. 2 개의 커밋이 있습니다. 첫 번째 버전은 실패했으며 두 번째 버전은 "Microsoft.Extensions.Logging.Abstractions"및 Microsoft.Extensions.Logging NuGet 패키지를 제거한 후 수정되었습니다. 해당 패키지를 다시 추가하면 테스트가 실패하게됩니다.Microsoft.Extensions.Logging 원인을 추가해도 파일이나 어셈블리를로드 할 수 없습니다. System.Net.Http 버전 = 4.2.0?

이 이상한 문제를 이해할 수 있도록 도와주세요. 닷넷 표준에서 나온이 패키지를 할 무언가가 있습니까? System.Net.Httpapisofnet에 따르면 .NET Core + Platform Extensions에서 제공되지만 .NET 코어는 사용하지 않습니다.

System.Net.Http 버전 4.0.0.0을 계속 사용할 수 있습니까? 빌드 출력 : Unified Primary Reference "System.Net.Http, Version = 4.2.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a".

업데이트 참고 사항 : 첫 번째 커밋에서 Nuget 패키지를 제거하는 동일한 작업을 수행 했으므로 테스트가 통과되지 않았으므로이 모든 작업은 빨간색 청어 일 수 있습니다. 아래의 스크린 샷은 제가 어쨌든 한 번 성공한 것을 보여줍니다.

업데이트 2 : 단계별로 커밋과 함께 재현 : https://github.com/aligneddev/UseSystemNetHttpReferencing/commits/reproduce. 모든 패키지를 제거한 다음 마지막 패키지를 제거한 후 Microsoft.Extensions.DependencyInjection.Abstractions - system.Net.http에 빌드 오류가 누락되었습니다. ReSharper와 함께 레퍼런스를 추가하고 단위 테스트를 통과합니다!

마지막 업데이트 : .Net 4.5.2로 다운 그레이드하면 문제가 해결됩니다. 나는 그것을 정말로 원하지 않는다 :-). 문제가 해결UseSystemNetHttp.Test 프로젝트의 app.config에서 바인딩 리디렉션을 추가

Failing Passing

+1

만들기'assemblyBinding'는'4.0 4.2 System.Net.Http' ? – Artyom

+0

좋은 생각이지만 나에게 도움이되지 못함 – Aligned

답변

1

:에서

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration>