2014-07-23 14 views
3

Microsoft.Threading.Tasks가 누락되어 응용 프로그램을로드 할 수 없음을 알기 위해 Azure에 대한 솔루션을 배포했습니다. 내 참조 된 프로젝트의런타임에 Microsoft.Threading.Tasks가 필요한 이유는 무엇입니까?

한 나는 휴대용 물건을

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Bcl" version="1.1.9" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" /> 
    <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" /> 
    <package id="Microsoft.Net.Http" version="2.2.22" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" /> 
    <package id="Newtonsoft.Json" version="6.0.3" targetFramework="portable-net45+sl50+win+wp80" /> 
</packages> 

를 사용하고 나는이 휴대용 포함되지 않습니다 developmentDependency 같은 내 주요 프로젝트로 사람들을 표시했다. 나는 .NET 4.5 애플리케이션이 이식 가능한 패키지를 필요로하지 않는다는 인상을 받았다. .NET의 핵심에 있어야하고 BCL은 제작시에만 필요했다.

내 가정이 잘못 되었습니까? .NET 4.5 응용 프로그램에 Microsoft.Bcl.BuildMicrosoft.Bcl.Async을 계속 포함해야합니까?

+0

4.5를 목표로한다면'Microsoft.Bcl.Async'를 전혀 포함하지 않는 이유는 무엇입니까? 이러한 패키지는 .NET 4.0 프로젝트가 .NET 4.5 기능 (async/await 및 일부 다른 호출)에 액세스 할 수 있도록합니다. –

+0

휴대용 라이브러리는 비 4.5 프로젝트의 기능을 지원할 수 있어야합니다. 포털 프로젝트 B는 위의 내용에 달려 있습니다. 라이브러리 A는 B에 의존하고 4.5이고, 4.5 앱에 위의 내용이 필요한 이유가 궁금합니다. –

답변

2

이 문제는 라이브러리가 Microsoft.Threading.Tasks 내부에 "뭔가"얘기를 컴파일한다 (실제로 당신은 가능성이 배포에 Microsoft.Threading.Tasks, Microsoft.Threading.Tasks.ExtensionsMicrosoft.Threading.Tasks.Extensions.Desktop을 포함해야합니다). .NET 4.5에있는 경우 해당 DLL의 코드는 .NET Framework에 대한 호출을 전달하기 만하면됩니다. .NET 4.0에서는 대체 호출을 수행합니다.

컴파일 된 DLL의 "가져 오기"(C 용어 사용)는 런타임 환경에 따라 변경되지 않습니다. 당신의 프로그램은 항상 그 프록시를 호출해야만하고, 4.5 시스템에서는 프록시가 거의 작동하지 않을 수 있지만 호출은 여전히 ​​발생해야합니다.