2009-03-11 5 views
2

.NET Framework 버전 3.0 (VS2008)에서 컴파일 된 Windows에서 .NET 사용자 응용 프로그램 (.exe)이 실행되고 있다고 가정 해 봅니다. 해당 응용 프로그램이 .NET Framework 버전 2.0 (VS2005)을 사용하여 다른 컴퓨터에서 컴파일 된 다른 .NET 어셈블리 (.dll)를로드하는 경우로드 된 어셈블리는 기존 3.0 런타임 (이전 버전과의 호환 모드에서 실행 됨)을 사용합니까? 또는 .NET Framework 2.0 런타임이 시스템의 프로세스 공간에로드되어 현재 두 개의 .NET 런타임이 동시에 실행되고 있습니까?여러 버전의 .NET CLR 동시 실행

어설 션 :이 VS2008 다중 대상 지정을 사용하고 있지 않습니다.

답변

1

개요와 같이 동일한 프로세스 공간에 있으면 3.0 이하에서 실행됩니다. 두 개의 다른 CLR이 스핀 업하려면 서비스 경계 (웹 서비스 또는 WCF가 여기에서 잘 작동 함 - 분명히 2.0의 WCF가 아님)를 만들어야하고 다른 응용 프로그램에서 서비스를 호출해야합니다.

+0

그레고리, 두 개의 서로 다른 CLR을 말하면 .NET 1.1 CLR을 의미합니까? 그 이후에는 .NET 2.0 CLR과 출시되지 않은 .NET 4.0 CLR이 있습니다. –

+0

예, 기술적으로 3.0과 3.5가 맨 위에있는 2.0 만 있습니다. 그러나 기술적으로 볼 때, 2.0 이상에 설치할 수있는 라이브러리가 있으며, 3.5 용으로 설치된 libs가 릴리스되었습니다. AJAX가 떠오른다. –

+0

그러나 기술적으로는 3 개의 기본 라이브러리로 1.0, 1.1 및 2.0이 있습니다. –

7

.NET 3.0 CLR이 없습니다. .NET 3.0과 3.5는 모두 .NET 2.0 CLR을 사용합니다.

물론 .NET 3.0 응용 프로그램이 .NET 3.0 기능을 사용하는 경우 .NET 3.0을 설치해야합니다.

+0

깔끔하고, 나는 그것을 깨닫지 못했습니다. 그래서 3.0과 3.5는 코드에서 사용할 수있는 새로운 어셈블리 (재단 등)입니다. – Todd

1

.NET 런타임 버전은 일반적으로 하위 버전과 호환되므로 3.0 런타임은 2.0 어셈블리를 호스팅하므로 3.0은 기본적으로 2.0 런타임과 동일합니다. 어떤 경우이든 CLR의 두 버전을 동일한 프로세스에로드 할 수 없습니다.