2010-04-15 3 views
24

.NET 2.0 어셈블리에서 .NET 4.0 어셈블리 호출 코드와의 호환성 장벽이 있습니까? 그 반대?.NET 4.0 코드와 .NET 2.0 코드를 상호 운용 할 수 있습니까?

특히, .NET 2.0 기반의 타사 응용 프로그램을 사용할 때 Visual Studio 2010으로의 업그레이드를 조사하고 있습니다. 응용 프로그램은 내 사용자 정의 코드를 참조하는 후크에 의해 확장 가능합니다. 그리고 그 반대도 마찬가지입니다. 제 코드는 응용 프로그램의 어셈블리를 참조합니다.

+1

[이 질문을보십시오 (http://stackoverflow.com/questions/1456785/a-definite-guide-to-api-breaking-changes-in-net). –

답변

38

.NET 4의 CLR은 .NET 2 어셈블리를 사용하고 올바르게 사용할 수 있습니다.

.NET 2 응용 프로그램에서 .NET 4 어셈블리를로드 할 수있게하려면 .NET 4 어셈블리를 다르게 구성해야합니다. requiredRuntime을 .NET 4 및 기존로드 정책으로 설정하면 CLR 4를 사용하여 .NET 2 응용 프로그램을 강제로로드 할 수 있어야 .NET 4 어셈블리를 사용할 수 있습니다.

설정하여 app.config 파일은 다음을 포함합니다 :

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

말했다되고 있다는이 같은 상황에서, 난 그냥 VS 2010을 사용하고 .NET 3.5을 표적으로 대신 .NET 4.이 권하고 싶습니다 CLR 2 용 어셈블리를 컴파일하고이 문제를 완전히 피할 수 있습니다.

+0

이것은 물론 .NET 2.0 응용 프로그램을 실행중인 서버에도 .NET 4.0이 설치되어 있다고 가정합니다. – cortijon

+2

@MrGrumbe : OP의 질문을 고려할 때 안전한 가정이라고 생각합니다. –

-3

.NET 4.0 어셈블리는 어려움없이 .NET 2.0 어셈블리를 호출 할 수 있습니다. 그러나 .NET 4.0 어셈블리가 새로운 프레임 워크 기능을 활용하지 않고 어셈블리 리디렉션을 설정하지 않는 한 .NET 2.0에서 .NET 4.0 어셈블리를 호출 할 가능성은 거의 없습니다.

+0

...이 작업을 수행하려고하면 경고 메시지가 표시되고 예기치 않은 동작이 발생할 수 있습니다. – Beachwalker

관련 문제