디자인 타임에 어셈블리 확인Resolving Assemblies at Design Time

참조 추가 대화 상자의 .NET 탭을 통해 어셈블리에 참조를 추가할 때, 참조는 중간 참조 어셈블리를 가리킵니다. 이 어셈블리는 모든 형식 및 시그니처 정보를 포함하지만 코드를 반드시 포함하지는 않습니다.When you add a reference to an assembly through the .NET tab of the Add Reference dialog, the reference points to an intermediate reference assembly, that is, an assembly that contains all the type and signature information, but that does not necessarily contain any code. .NET 탭에는 .NET Framework의 런타임 어셈블리에 해당하는 참조 어셈블리가 표시됩니다.The .NET tab lists reference assemblies that correspond to runtime assemblies in the .NET Framework. 또한 타사에서 사용되는 등록된 AssemblyFoldersEx 폴더의 런타임 어셈블리에 해당하는 참조 어셈블리도 표시됩니다.In addition, it lists reference assemblies that correspond to runtime assemblies in the registered AssemblyFoldersEx folders used by third parties.

멀티 타기팅Multi-Targeting

Visual Studio 2013Visual Studio 2013를 사용하면 CLR(공용 언어 런타임) 버전 2.0 또는 버전 4에서 실행되는 .NET Framework의 버전을 대상으로 지정할 수 있습니다. lets you target versions of the .NET Framework that run either on the Common Language Runtime (CLR) version 2.0 or version 4. 여기에는 .NET Framework 버전 2.0, 3.0, 3.5, 4, 4.5 및 4.5.1과 Silverlight 버전 1.0, 2.0 및 3.0이 포함됩니다.This includes .NET Framework versions 2.0, 3.0, 3.5, 4, 4.5, and 4.5.1, and Silverlight versions 1.0, 2.0, and 3.0. CLR 버전 2.0 또는 버전 4를 기준으로 하는 새 .NET Framework 버전이 릴리스되면 타기팅 팩을 사용하여 Framework를 설치할 수 있으며 설치된 후에는 자동으로 Visual Studio에서 대상으로 표시됩니다.If a new .NET Framework version that is based on CLR version 2.0 or version 4 is released, the Framework can be installed by using a targeting pack, and it will automatically show up as a target in Visual Studio.

형식 확인 작동 방식How Type Resolution Works

런타임에 CLR은 GAC, bin 디렉터리 및 모든 검색 경로를 확인하여 어셈블리의 형식을 확인합니다.At runtime, the CLR resolves the types in the assembly by looking in the GAC, the bin directory, and in any probing paths. 이 작업은 Fusion 로더에 의해 처리됩니다.This is handled by the fusion loader. 그러나 Fusion 로더에서 어떤 항목을 찾고 있는지를 어떻게 알 수 있나요?But, how does the fusion loader know what it is looking for? 이것은 응용 프로그램이 빌드되는 디자인 타임에 수행되는 확인에 따라 결정됩니다.This depends on a resolution made at design time, when the application is built.

빌드 중에 컴파일러는 참조 어셈블리를 사용하여 응용 프로그램 형식을 확인합니다.During the build, the compiler resolves application types by using reference assemblies. .NET Framework 버전 2.0, 3.0, 3.5, 4, 4.5 및 4.5.1에서 .NET Framework가 설치될 때 참조 어셈블리가 설치됩니다.In .NET Framework versions 2.0, 3.0, 3.5, 4, 4.5, and 4.5.1, the reference assemblies are installed when the .NET Framework is installed.

참조 어셈블리는 상응하는 버전의 .NET Framework SDK와 함께 제공되는 대상 지정 팩을 통해 제공됩니다.The reference assemblies are supplied by the targeting pack that ships with the corresponding version of the .NET Framework SDK. Framework는 자체적으로 런타임 어셈블리만 제공합니다.The Framework itself provides only the runtime assemblies. 응용 프로그램을 빌드하기 위해서는 .NET Framework와 해당.NET Framework SDK를 모두 설치해야 합니다.In order to build applications, you need to install both the .NET Framework and the corresponding .NET Framework SDK.

특정 .NET Framework를 대상으로 지정하면 빌드 시스템은 타기팅 팩의 참조 어셈블리를 사용하여 모든 형식을 확인합니다.When you target a specific .NET Framework, the build system resolves all types by using the reference assemblies in the targeting pack. 런타임에 Fusion 로더는 일반적으로 GAC에 있는 런타임 어셈블리에서도 이러한 동일한 형식을 확인합니다.At runtime, the fusion loader resolves these same types to the runtime assemblies, which are typically located in the GAC.

참조 어셈블리를 사용할 수 없으면 빌드 시스템은 런타임 어셈블리를 사용하여 어셈블리 형식을 확인합니다.If reference assemblies are not available, then the build system resolves assembly types by using the runtime assemblies. GAC의 런타임 어셈블리는 부 버전 번호로 구분되지 않으므로 잘못된 어셈블리로 확인될 수 있습니다.Because runtime assemblies in the GAC are not distinguished by minor version numbers, it is possible that resolution will be made to the wrong assembly. 예를 들어 버전 3.0을 대상으로 지정했으나 .NET Framework 버전 3.5에 도입된 새 메서드가 참조되는 경우에 이러한 문제가 발생할 수 있습니다.This could happen, for example, if a new method introduced in the .NET Framework version 3.5 is referenced while targeting version 3.0. 빌드가 성공하고 응용 프로그램은 빌드 컴퓨터에서 실행되지만 버전 3.5가 설치되지 않은 컴퓨터로 배포하려고 하면 실패합니다.The build will succeed, and the application will run on the build machine, but will fail when deployed to a machine that does not have version 3.5 installed.

이제 .NET Framework SDK가 포함된 타기팅 팩에는 해당 버전의 Framework에 있는 모든 런타임 어셈블리 목록(재배포 목록이라고도 함)이 포함됩니다.The targeting pack that now ships with the .NET Framework SDK includes a list of all of the runtime assemblies in that version of the Framework, called the redistribution (redist) list. 따라서 빌드 시스템이 어셈블리의 잘못된 버전에 대해 형식을 확인할 가능성은 없습니다.This makes it impossible for the build system to resolve types against the wrong version of the assembly.

참고 항목See Also

고급 개념Advanced Concepts