다음을 통해 공유


디자인 타임에 어셈블리 확인

참조 추가 대화 상자의 .NET 탭을 통해 어셈블리에 대한 참조를 추가하면 GAC(전역 어셈블리 캐시)에 있는 어셈블리를 참조하게 된다고 잘못 알고 있는 경우가 많습니다. 그러나 실제로는 그렇지 않습니다. 실제로 참조하는 것은 중간 참조 어셈블리, 즉 모든 형식 및 시그니처 정보는 포함하지만 코드를 반드시 포함하지는 않는 어셈블리입니다. .NET 탭에는 .NET 프레임워크의 런타임 어셈블리에 대응하는 참조 어셈블리가 나열됩니다. 또한 타사에서 사용하는 등록된 AssemblyFoldersEx 폴더에 있는 런타임 어셈블리에 대응하는 참조 어셈블리도 나열됩니다.

다중 대상 지정

Visual Studio 2010을 사용하면 CLR(공용 언어 런타임) 버전 2.0 또는 4에서 실행되는 .NET Framework의 버전을 대상으로 지정할 수 있습니다. 대상으로 지정할 수 있는 버전에는 .NET Framework 2.0, 3.0, 3.5, 4 및 Silverlight 1.0, 2.0, 3.0이 있습니다. CLR 버전 2.0 또는 4에 기반하는 새 .NET Framework 버전이 릴리스될 경우 이 프레임워크는 대상 지정 팩을 사용하여 설치될 수 있으며 자동으로 Visual Studio에서 대상으로 표시됩니다. 자세한 내용은 MSBuild 다중 대상을 참조하십시오.

형식 확인 작동 방식

런타임에 CLR은 GAC, bin 디렉터리 및 모든 검색 경로를 탐색하여 어셈블리에서 형식을 확인합니다. 이 탐색 과정은 퓨전 로더에서 처리합니다. 이 퓨전 로더는 찾을 대상을 파악할 때 응용 프로그램이 빌드되는 디자인 타임에 수행되는 확인에 의존합니다.

빌드 중에 컴파일러는 참조 어셈블리를 사용하여 응용 프로그램 형식을 확인합니다. .NET Framework 버전 2.0, 3.0 및 3.5의 경우 참조 어셈블리는 .NET Framework 설치 시점에 설치됩니다.

.NET Framework 버전 4에서는 상응하는 버전의 .NET Framework SDK와 함께 제공되는 대상 지정 팩을 통해 참조 어셈블리가 제공됩니다. 프레임워크 자체에서 제공하는 것은 런타임 어셈블리뿐입니다. 응용 프로그램을 빌드하려면 .NET Framework 및 상응하는 .NET Framework SDK를 설치해야 합니다.

특정 .NET Framework를 대상으로 지정할 경우 빌드 시스템에서는 대상 지정 팩에 있는 참조 어셈블리를 사용하여 모든 형식을 확인합니다. 런타임에 퓨전 로더는 이와 같은 동일한 형식을 런타임 어셈블리로 확인하게 되고, 이러한 어셈블리는 일반적으로 GAC에 있습니다.

참조 어셈블리를 사용할 수 없는 경우 빌드 시스템에서는 런타임 어셈블리를 사용하여 어셈블리 형식을 확인합니다. GAC의 런타임 어셈블리는 부 버전 번호로 구분되지 않기 때문에 어셈블리가 잘못 확인될 수도 있습니다. 예를 들어 대상 버전이 3.0인 상태에서 .NET Framework 버전 3.5에 새로 도입된 메서드를 참조할 경우 어셈블리가 잘못 확인될 수 있습니다. 이 경우에도 빌드에 성공하고 응용 프로그램이 빌드 컴퓨터에서 실행되기는 하지만 버전 3.5가 설치되지 않은 컴퓨터에 배포하면 실행되지 않습니다.

대상 지정 팩은 이제 .NET Framework SDK와 함께 제공되며 이 팩에는 해당 프레임워크와 동일한 버전의 모든 런타임 어셈블리 목록, 즉 재배포 목록이 포함되어 있습니다. 따라서 빌드 시스템에서 잘못된 버전의 어셈블리로 형식을 확인하는 문제가 발생하지 않습니다.

참고 항목

개념

MSBuild 고급 개념