2014-12-19 4 views
3

내 .NET 프로젝트를 실행할 때 나는 다음과 같은 런타임 오류 복사 : GAC 의존성 및 NuGet을 사용할 수 없습니다NuGet 패키지 GAC 의존성

Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 

Microsoft.WindowsAzure.ServiceRuntime, 내가 이해에서합니다.

내 .NET 프로젝트가 Azure SDK 2.5에서 ServiceRuntime 2.5.0.0을 참조하고 있습니다. 예외의 stacktrace는 우리의 커스텀 NuGet 패키지 중 하나가 2.4.0.0을 참조하고 있음을 보여줍니다.

NuGet 패키지의 의존성을 볼 때, 그것이 내가 그것이 GAC 참조 (NuGet 해결할 수없는 무엇인가)이기 때문에 가정 ServiceRuntime, 표시되지 않습니다 : 나는에 의해 발견

NuGet Depedencies

을 다음 web.config 변화를 추가, 지금 작동 : 2.5.0.0은 2.4.0.0 사양과 호환 경우

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.5.0.0" newVersion="2.5.0.0" /> 
</dependentAssembly> 

나는 이것이에만 작동한다고 가정합니다.

질문 : 그것은 호환 아니었다면

  • 는 어떻게 될까?
  • Microsoft.WindowsAzure.ServiceRuntime이 NuGet 패키지가 아닌 이유는 무엇입니까?

답변

3

그럼에도 불구하고 질문에 대답하는 것이 조금 늦을 지 모르지만 결코 늦지 않는 것이 좋습니다. 다음은 내 견해입니다.

이전 버전과 호환되지 않는 경우 어떻게됩니까?

어셈블리의 다음 버전이 이전 버전과 호환 될 가능성은 거의 없지만 솔루션은 중단 될 수 있습니다. 이전 버전의 .Net/CLR 버전을 사용하면 atNet/CLR 버전을 사용할 수 있습니다. 꽤 오랜 시간이 지나면이 경우처럼 즉시 지원을 멈추게됩니다. 어셈블리는 이전 버전과의 호환성이있는 경우에만 다음 버전으로, 그렇지 않으면 새 어셈블리입니다.

Microsoft.WindowsAzure.ServiceRuntime이 NuGet 패키지가 아닌 이유는 무엇입니까?

먼저 Nuget here의 존재 이유를 이해하십시오. 본질적으로 제 3 자 라이브러리/확장 프로그램에만 해당됩니다. 소스 코드를 사용할 수없고 외부 개발자가 수정할 수없는 핵심 MS/.NET 프레임 워크 라이브러리를위한 것이 아닙니다.

호프가 도움이되기를 바랍니다.

+1

Nuget은 제 3 자 라이브러리에만 해당되는 것은 아닙니다. Microsoft는 현재 1100 개 이상의 패키지가 포함 된 nuget (https://www.nuget.org/profiles/microsoft)에서 자체 피드를 제공합니다. –

+0

MS는 Nuget을 통해 핵심 .Net 라이브러리를 제공하지 않으며 링크에 언급 된 라이브러리는 추가 기능을위한 선택적 라이브러리입니다. 대부분의 경우 타사 경쟁 업체가 있거나 현재 구현을 수정하기 위해 재정의 할 수 있습니다. –

+0

링크 내가 언급 한, 당신은 핵심으로 간주 될 수있는 꽤 많은 라이브러리를 볼 수 있습니다. - MVC, WebApi, OData, Razor, Owin 및 EntityFramework. 하지만 확실한 점은 SDK의 일부를 설치해야한다는 것입니다. –