2017-09-20 30 views
10

우리가 내부적으로 공유하는 작은 NuGet 패키지를 참조하는 .NET Framework 4.6.1 WebApi 프로젝트가 있습니다. 유틸리티 메소드.메서드를 찾을 수 없습니다. .NET 표준 2.0 종속성을 추가 한 후 System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()

우리는 우리 물건 중 일부를 .NET 코어로 옮기기를 원한다. 따라서 .NET 표준 2.0을 목표로 유틸리티 패키지를 변경했다. 이 작업은 단순히 새로운 .NET Standard 2.0 프로젝트를 만들고 소스 파일을 복사하여 수행되었습니다.

유틸리티 패키지 csproj :

<Project Sdk="Microsoft.NET.Sdk"> 

    <PropertyGroup> 
    <TargetFramework>netstandard2.0</TargetFramework> 
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild> 
    </PropertyGroup> 

</Project> 

내 WebApi 프로젝트의 패키지를 업데이트 한 후, 나는 시작에 다음과 같은 예외를 얻을 :

[MissingMethodException: Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.] 
    MyWebApiProject.Application.InitializeHttpConfiguration(HttpConfiguration config) in C:\MyWebApiProject\Global.asax.cs:44 
    System.Web.Http.GlobalConfiguration.Configure(Action`1 configurationCallback) +34 
    MyWebApiProject.Application.OnApplicationStarted() in C:\MyWebApiProject\Global.asax.cs:62 
    Ninject.Web.Common.NinjectHttpApplication.Application_Start() +183 

[HttpException (0x80004005): Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.] 
    System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +10104513 
    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 
    System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +173 
    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336 
    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 

[HttpException (0x80004005): Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10085804 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 

유일한 변화는 packages.config의 버전 번호입니다 및 csproj.

아이디어가 있으십니까?

감사합니다.

답변

21

그냥 System.Net.Http로 리디렉션 바인딩 필요가 밝혀졌다 :

<dependentAssembly> 
    <assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/> 
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/> 
</dependentAssembly>