참조 관리자를 사용하여 참조 추가 또는 제거
참조 관리자 대화 상자를 사용하여 사용자, Microsoft 또는 다른 회사에서 개발한 구성 요소에 대한 참조를 추가하고 관리할 수 있습니다. 유니버설 Windows 앱을 개발하는 경우 프로젝트에서 올바른 모든 Windows SDK DLL을 자동으로 참조합니다. .NET 프로젝트를 만들 때 프로젝트는 .NET SDK와 같이 필요한 구성 요소를 자동으로 참조하지만 기능을 추가할 때 참조를 추가해야 합니다. 일부 .NET API는 수동으로 추가해야 하는 구성 요소에 노출됩니다. COM 구성 요소 또는 사용자 지정 구성 요소에 대한 참조를 수동으로 추가해야 합니다.
참조하는 라이브러리에 NuGet 패키지를 사용할 수 있는 경우 NuGet 패키지 관리자를 사용합니다. NuGet 패키지 설치 및 사용참조하세요.
참조 관리자 대화 상자
참조 관리자 대화 상자는 프로젝트 유형에 따라 왼쪽에 다른 범주를 표시합니다.
Framework 및 확장 하위 그룹이 있는 어셈블리(.NET Framework에만 해당)
COM 참조에 사용할 수 있는 모든 COM 구성 요소를 나열합니다.
Windows은 Core 및 확장 하위 그룹과 함께. 개체 브라우저사용하여 Windows SDK 또는 확장 SDK에서 참조를 탐색할 수 있습니다.
최근 하위 그룹을찾아보기
메모
C++ 프로젝트를 개발하는 경우 참조 관리자 대화 상자에 찾아보기 표시되지 않을 수 있습니다.
참조 추가
솔루션 탐색기참조 또는 종속성 노드를 마우스 오른쪽 단추로 클릭한 다음 프로젝트 참조추가, 공유 프로젝트 참조 추가 또는 상황에 맞는 메뉴에서 COM 참조 추가 선택합니다. (프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 플라이아웃 메뉴에서 추가를 선택하여 이러한 옵션 중에서 선택할 수도 있습니다.)
참조 관리자 열리고 그룹별로 사용 가능한 참조가 나열됩니다.
추가할 참조를 선택한 다음 확인을 선택합니다.
메모
참조가 보이지 않으면, "찾아보기"를 선택하여 참조를 찾습니다. (C++ 프로젝트를 개발하는 경우 찾아보기 옵션이 표시되지 않을 수 있습니다.)
어셈블리 탭(.NET Framework에만 해당)
메모
.NET Core 또는 .NET 5 이상을 대상으로 하는 프로젝트에는 어셈블리 탭을 사용할 수 없습니다. 찾아보기을(를) 선택하여 파일 시스템에서 어셈블리를 찾아 참조로 추가합니다. 프로젝트에서 참조된 어셈블리를 보려면 프로젝트에서 종속성 노드를 확장합니다. 종속성 노드에서 마우스 오른쪽 단추를 클릭하여 프로젝트 참조를 추가하거나 제거하거나, 어셈블리 노드에서 어셈블리를 보거나 제거하거나, NuGet 패키지 브라우저를 열어 NuGet 패키지를 관리할 수 있습니다. NuGet 설명서의 NuGet 패키지 관리자 사용하여 Visual Studio에서 패키지 설치 및 관리 참조하세요.
.NET Framework 프로젝트의 경우 어셈블리 탭에는 참조에 사용할 수 있는 모든 .NET 어셈블리가 나열됩니다. 어셈블리 탭에는 GAC(전역 어셈블리 캐시)의 어셈블리가 나열되지 않습니다. GAC의 어셈블리는 런타임 환경의 일부이기 때문입니다. GAC에 등록된 어셈블리에 대한 참조가 포함된 애플리케이션을 배포하거나 복사하는 경우 로컬 복사 설정에 관계없이 어셈블리가 배포되거나 애플리케이션과 함께 복사되지 않습니다. 자세한 내용은 프로젝트 참조 관리를 참조하세요.
EnvDTE 네임스페이스(EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a또는 EnvDTE100)에 대한 참조를 수동으로 추가할 때, 속성 창에서 참조의 Embed Interop Types 속성을 False로 설정합니다. 이 속성을 True 설정하면 포함할 수 없는 특정 EnvDTE 속성으로 인해 빌드 문제가 발생할 수 있습니다.
모든 데스크톱 프로젝트에는 mscorlib대한 암시적 참조가 포함되어 있습니다. Visual Basic 프로젝트에는 Microsoft.VisualBasic대한 암시적 참조가 포함되어 있습니다. 참조 목록에서 제거된 경우에도 모든 프로젝트에는 System.Core대한 암시적 참조가 포함됩니다.
어셈블리 탭은 다음 두 개의 하위 탭으로 구성됩니다.
Framework 대상 프레임워크를 구성하는 모든 어셈블리를 나열합니다.
.NET Core 또는 유니버설 Windows 플랫폼을 대상으로 하지 않는 프로젝트의 경우 Framework 탭은 대상 프레임워크의 어셈블리를 열거합니다. 사용자는 애플리케이션에 필요한 참조를 추가해야 합니다.
유니버설 Windows 프로젝트에는 기본적으로 대상 프레임워크의 모든 어셈블리에 대한 참조가 포함되어 있습니다. 관리되는 프로젝트에서 솔루션 탐색기의 References 폴더 아래의 읽기 전용 노드는 전체 프레임워크에 대한 참조를 나타냅니다. 따라서 Framework 탭은 프레임워크의 어셈블리를 열거하지 않고 대신 다음과 같은 메시지를 표시합니다. "모든 프레임워크 어셈블리가 이미 참조되었습니다. 개체 브라우저를 사용하여 프레임워크의 참조를 탐색하세요."
확장 대상 프레임워크를 확장하기 위해 구성 요소 및 컨트롤의 외부 공급업체가 개발한 모든 어셈블리를 나열합니다. 사용자 애플리케이션의 목적에 따라 이러한 어셈블리가 필요할 수 있습니다.
확장 다음 위치에 등록된 어셈블리를 열거하여 채워집니다.
32비트 컴퓨터:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
64비트 컴퓨터:
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
이전 버전의 [대상 프레임워크 식별자]
예를 들어, 프로젝트가 32비트 컴퓨터에서 .NET Framework 4를 대상으로 하는 경우, Extensions은 \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx및 \Microsoft.NETFramework\v2.0\AssemblyFoldersEx에 등록된 어셈블리를 열거합니다.
프로젝트의 프레임워크 버전에 따라 목록의 일부 구성 요소가 표시되지 않을 수 있습니다. 이 상황은 다음과 같은 조건에서 발생할 수 있습니다.
최근 프레임워크 버전을 사용하는 구성 요소는 이전 버전을 대상으로 하는 프로젝트와 호환되지 않습니다.
프로젝트의 대상 프레임워크 버전을 변경하는 방법에 대한 자세한 내용은 Framework 대상 지정 개요참조하세요.
이전 버전의 .NET Framework를 사용하는 구성 요소는 최신 .NET Framework를 대상으로 하는 프로젝트와 호환되지 않습니다.
.NET Framework 버전 간의 버전 호환성에 대한 자세한 내용은 버전 호환성참조하세요.
동일한 솔루션에 있는 다른 프로젝트의 출력에 파일 참조를 추가하지 않아야 합니다. 이렇게 하면 컴파일 오류가 발생할 수 있기 때문입니다. 참조 추가 대화 상자에서 프로젝트 탭을 사용하여 프로젝트 간 참조를 만드세요. 이렇게 하면 프로젝트에서 만든 클래스 라이브러리를 더 효율적으로 관리할 수 있으므로 팀 개발이 더 쉬워집니다. 끊어진 참조 문제 해결에 대한 자세한 내용은 을 참조하세요.
메모
한 프로젝트의 대상 프레임워크 버전이 .NET Framework 4.5 이상이고 다른 프로젝트의 대상 버전이 .NET Framework 2, 3, 3.5 또는 4.0인 경우 프로젝트 참조 대신 파일 참조가 만들어집니다. .NET, .NET Framework 및 .NET Core에 대한 자세한 내용은 .NET(및 .NET Core)이란 무엇입니까을 참조하세요.
참조 추가 대화 상자에서 어셈블리를 표시하려면
어셈블리를 다음 위치 중 하나로 이동하거나 복사합니다.
현재 프로젝트 디렉터리입니다. (찾아보기 탭을 사용하여 이러한 어셈블리를 찾을 수 있습니다.)
동일한 솔루션의 다른 프로젝트 디렉터리입니다. (프로젝트 탭을 사용하여 이러한 어셈블리를 찾을 수 있습니다.)
-또는-
표시할 어셈블리의 위치를 지정하는 레지스트리 키를 설정합니다.
32비트 운영 체제의 경우 다음 레지스트리 키 중 하나를 추가합니다.
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
64비트 운영 체제의 경우 32비트 레지스트리 하이브에 다음 레지스트리 키 중 하나를 추가합니다.
[HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
<VersionMinimum> 적용되는 가장 낮은 프레임워크 버전입니다. <VersionMinimum> v3.0인 경우 AssemblyFoldersEx에 지정된 폴더는 .NET Framework 3.0 이상을 대상으로 하는 프로젝트에 적용할 있습니다.
<AssemblyLocation>참조 추가 대화 상자에 표시하려는 어셈블리의 디렉터리입니다(예: C:\MyAssemblies ).
HKEY_LOCAL_MACHINE
노드 아래에 레지스트리 키를 만들면 모든 사용자가 참조 추가 대화 상자의 지정된 위치에 있는 어셈블리를 볼 수 있습니다.HKEY_CURRENT_USER
노드 아래에 레지스트리 키를 만들면 현재 사용자의 설정에만 영향을 줍니다.참조 추가 대화 상자를 다시 엽니다. 어셈블리는 .NET 탭에 표시됩니다. 그렇지 않은 경우 어셈블리가 지정된 AssemblyLocation 디렉터리에 있는지 확인하고 Visual Studio를 다시 시작한 다음 다시 시도합니다.
프로젝트 탭
프로젝트 탭은 현재 솔루션 내의 솔루션 하위 탭에 있는 호환되는 모든 프로젝트를 나열합니다.
프로젝트는 다른 프레임워크 버전을 대상으로 하는 다른 프로젝트를 참조할 수 있습니다. 예를 들어 .NET 8.0을 대상으로 하지만 .NET 6.0용으로 빌드된 어셈블리를 참조하는 프로젝트를 만들 수 있습니다. 그러나 .NET 6.0 프로젝트는 .NET Framework 8.0 프로젝트를 참조할 수 없습니다. 자세한 내용은 Framework 대상 지정 개요참조하세요.
공유 프로젝트 탭
참조 관리자 대화 상자의 공유 프로젝트 탭에서 공유 프로젝트에 대한 참조를 추가합니다. 공유 프로젝트를 사용하면 다양한 애플리케이션 프로젝트에서 참조하는 공통 코드를 작성할 수 있습니다.
유니버설 Windows 탭
유니버설 Windows 탭에는 Windows 운영 체제가 실행되는 플랫폼과 관련된 모든 SDK가 나열됩니다. 이 탭에는 Core 및 확장두 개의 하위 그룹이 있습니다.
핵심 하위 그룹
유니버설 Windows 앱 프로젝트에는 기본적으로 유니버설 Windows SDK에 대한 참조가 있습니다. 따라서 참조 관리자Core 하위 그룹은 유니버설 Windows SDK의 어셈블리를 열거하지 않습니다.
확장 하위 그룹
확장 대상 Windows 플랫폼을 확장하는 사용자 SDK를 나열합니다.
SDK는 Visual Studio에서 단일 구성 요소로 처리하는 파일의 컬렉션입니다. 확장 탭에서 참조 관리자 대화 상자가 호출된 프로젝트에 적용되는 SDK가 단일 항목으로 나열됩니다. 프로젝트에 추가되면 사용자가 IntelliSense, 도구 상자, 디자이너, 개체 브라우저, 빌드, 배포, 디버깅 및 패키징에서 SDK 콘텐츠를 활용하기 위해 추가 작업을 수행할 필요가 없도록 Visual Studio에서 모든 SDK 콘텐츠를 사용합니다.
확장 탭에 SDK를 표시하는 방법에 대한 자세한 내용은 소프트웨어 개발 키트 만들기참조하세요.
메모
프로젝트에서 다른 SDK에 의존하는 SDK를 참조하는 경우 두 번째 SDK에 대한 참조를 수동으로 추가하지 않는 한 Visual Studio는 두 번째 SDK를 사용하지 않습니다. 확장 탭에서 SDK를 선택하면 참조 관리자 대화 상자를 통해 세부 정보 창에 종속성을 나열하여 SDK 종속성을 식별할 수 있습니다.
프로젝트 형식이 확장을 지원하지 않는 경우 이 탭은 참조 관리자 대화 상자에 표시되지 않습니다.
COM 탭
COM 탭에는 참조에 사용할 수 있는 모든 COM 구성 요소가 나열됩니다. 내부 매니페스트가 포함된 등록된 COM DLL에 대한 참조를 추가하려면 먼저 DLL의 등록을 취소합니다. 그렇지 않으면 Visual Studio에서 어셈블리 참조를 네이티브 DLL 대신 ActiveX 컨트롤로 추가합니다.
프로젝트 형식이 COM을 지원하지 않는 경우 참조 관리자 대화 상자에 탭이 표시되지 않습니다.
찾아보기
찾아보기 단추를 사용하여 파일 시스템에서 구성 요소 또는 어셈블리를 찾을 수 있습니다.
프로젝트는 다른 프레임워크 버전을 대상으로 하는 구성 요소를 참조할 수 있습니다. 예를 들어 .NET Framework 4.7.2를 대상으로 하지만 .NET Framework 4를 대상으로 하는 구성 요소를 참조하는 애플리케이션을 만들 수 있습니다. 자세한 내용은 Framework 대상 지정 개요참조하세요.
이 전술로 인해 컴파일 오류가 발생할 수 있으므로 동일한 솔루션에 있는 다른 프로젝트의 출력에 파일 참조를 추가하지 마세요. 대신 참조 관리자 대화 상자의 솔루션 탭을 사용하여 프로젝트-프로젝트 참조를 만듭니다. 이렇게 하면 프로젝트에서 만든 클래스 라이브러리를 더 효율적으로 관리할 수 있으므로 팀 개발이 더 쉬워집니다. 자세한 내용은 끊어진 참조 문제를 해결하는 방법 을 참조하세요.
SDK로 이동하여 프로젝트에 추가할 수 없습니다. 파일(예: 어셈블리 또는 .winmd)만 찾아 프로젝트에 추가할 수 있습니다.
WinMD에 대한 파일 참조를 수행할 때 예상된 레이아웃은 <FileName>.winmd, <FileName>.dll및 <FileName>.pri 파일이 모두 나란히 배치되는 것입니다. 다음 시나리오에서 WinMD를 참조하는 경우 불완전한 파일 집합이 프로젝트 출력 디렉터리에 복사되므로 빌드 및 런타임 오류가 발생합니다.
네이티브 구성 요소: 네이티브 프로젝트는 서로 연결되지 않은 각 네임스페이스 집합에 대해 WinMD 1개와 구현으로 구성된 DLL 하나를 만듭니다. WinMD에는 서로 다른 이름이 있습니다. 이 네이티브 구성 요소 파일을 참조할 때 MSBuild는 이름이 다른 WinMD가 하나의 구성 요소를 만드는 것을 인식하지 못합니다. 따라서 이름이 동일한 <FileName>.dll 및 <FileName>.winmd이 복사되며, 런타임 오류가 발생합니다. 이 문제를 해결하려면 확장 SDK를 만듭니다. 자세한 내용은 소프트웨어 개발 키트만들기를 참조하세요.
사용 컨트롤: 최소한 XAML 컨트롤은 <FileName>.winmd, <FileName>.dll, <FileName>.pri, <XamlName>.xaml및 <ImageName>.jpg구성됩니다. 프로젝트를 빌드할 때 파일 참조와 연결된 리소스 파일은 프로젝트의 출력 디렉터리에 복사되지 않고, 오직 <FileName>.winmd, <FileName>.dll, 및 <FileName>.pri만 복사됩니다. XamlName>.xaml 및 <ImageName>.jpg<리소스가 누락되었음을 나타내는 빌드 오류가 기록됩니다. 성공하려면 빌드 및 디버깅/런타임을 위해 이러한 리소스 파일을 프로젝트 출력 디렉터리에 수동으로 복사합니다. 이 문제를 해결하려면 소프트웨어 개발 키트 만들기 단계에 따라 확장 SDK를 만들거나 프로젝트 파일을 편집하여 다음 속성을 추가합니다.
<PropertyGroup> <GenerateLibraryOutput>True</GenerateLibraryOutput> </PropertyGroup>
메모
속성을 추가하면 빌드 속도가 느려질 수 있습니다.
최근
어셈블리, COM, Windows및 찾아보기 각각은 프로젝트에 최근에 추가된 구성 요소 목록을 열거하는 최근 탭을 지원합니다.
검색
참조 관리자 대화 상자의 검색 창은 포커스가 있는 탭에서 작동합니다. 예를 들어 솔루션 탭이 포커스에 있는 동안 검색 창에 "시스템"을 입력하면 솔루션이 "시스템"이 포함된 프로젝트 이름으로 구성되지 않는 한 검색은 결과를 반환하지 않습니다.
참조 제거
사용되지 않는 참조 제거 메뉴 항목을 사용하여 Visual Studio에서 SDK 스타일 프로젝트에 사용되지 않는 참조를 제거할 수 있습니다.
자세한 내용은 사용되지 않는 참조제거를 참조하세요.
관련 콘텐츠
- 프로젝트에서 참조 관리하기
- 끊어진 참조 문제 해결
- NuGet과 SDK를 프로젝트 참조로