/reference(메타데이터 가져오기)(C# 컴파일러 옵션)
업데이트: 2007년 11월
/reference 옵션을 사용하면 컴파일러에서 지정된 파일에 있는 public(C# 참조) 형식 정보를 현재 프로젝트로 가져오므로 지정한 어셈블리 파일에 있는 메타데이터를 참조할 수 있습니다.
/reference:[alias=]filename
/reference:filename
인수
filename
어셈블리 매니페스트가 들어 있는 파일의 이름을 나타냅니다. 여러 개의 파일을 가져오려면 각 파일에 대해 별도의 /reference 옵션을 사용합니다.alias
어셈블리의 모든 네임스페이스를 포함하는 루트 네임스페이스를 나타내는 유효한 C# 식별자입니다.
설명
여러 파일에서 가져오려면 각 파일에 대해 별도의 /reference 옵션을 사용합니다.
가져오는 파일에는 매니페스트가 포함되어야 하며, 출력 파일은 /target:module(어셈블리에 추가할 모듈 만들기)(C# 컴파일러 옵션) 대신 /target(출력 파일 형식 지정) (C# 컴파일러 옵션) 옵션 중의 하나로 컴파일되어 있어야 합니다.
/r은 /reference의 약식 표현입니다.
어셈블리 매니페스트가 없는 출력 파일에서 메타데이터를 가져오려면 /addmodule(메타데이터 가져오기) (C# 컴파일러 옵션)을 사용합니다.
다른 어셈블리(어셈블리 B)를 참조하는 어셈블리(어셈블리 A)를 참조할 때 다음과 같은 경우에는 어셈블리 B를 참조해야 합니다.
Assembly A에서 사용하는 형식이 Assembly B에서 상속한 형식이거나 Assembly B의 인터페이스로 구현된 경우
Assembly B의 반환 형식이나 매개 변수 형식을 가진 필드, 속성, 이벤트 또는 메서드를 호출하는 경우
하나 이상의 어셈블리 참조가 있는 디렉터리를 지정하려면 /lib(어셈블리 참조 위치 지정) (C# 컴파일러 옵션)를 사용합니다. /lib 항목에서는 컴파일러가 어셈블리를 검색하는 디렉터리에 대해서도 설명합니다.
모듈이 아니라 어셈블리에 있는 특정 형식을 컴파일러에서 인식할 수 있도록 하려면 컴파일러에서 해당 형식을 확인할 수 있게 해야 합니다. 이를 위해 해당 형식의 인스턴스를 정의합니다. 컴파일러는 다른 방법을 사용하여 어셈블리에서 형식 이름을 확인할 수 있습니다. 예를 들어, 어셈블리에서 특정 형식을 상속하면 해당 형식 이름이 컴파일러에 전달됩니다.
경우에 따라 하나의 어셈블리 내에 있는 동일한 구성 요소의 두 가지 버전을 참조해야 할 수도 있습니다. 이렇게 하려면 각 파일에 대한 /reference 스위치에 별칭 하위 옵션을 사용하여 두 파일을 구별합니다. 이 별칭은 구성 요소 이름에 대한 한정자로 사용되며 파일 중 하나에 있는 구성 요소로 확인됩니다.
일반적으로 사용되는 .NET Framework 어셈블리를 참조하는 csc 지시 파일(.rsp)이 기본적으로 사용됩니다. 컴파일러에서 csc.rsp를 사용하지 않도록 하려면 /noconfig(csc.rsp 무시) (C# 컴파일러 옵션)를 사용합니다.
자세한 내용은 참조 추가 대화 상자를 참조하십시오.
예제
이 예제에서는 extern alias(C# 참조) 기능을 사용하는 방법을 보여 줍니다.
소스 파일을 컴파일하고 이전에 컴파일한 grid.dll 및 grid20.dll에서 메타데이터를 가져옵니다. 이러한 두 DLL에는 동일한 구성 요소의 개별 버전이 들어 있으므로 별칭 옵션과 함께 두 개의 /reference를 사용하여 소스 파일을 컴파일합니다. 옵션은 다음과 같습니다.
/reference:GridV1=grid.dll and /reference:GridV2=grid20.dll
이렇게 하면 extern 문을 통해 프로그램에서 사용할 수 있는 외부 별칭 "GridV1" 및 "GridV2"가 설정됩니다.
extern GridV1;
extern GridV2;
// Using statements go here.
이 작업을 마치면 다음과 같이 컨트롤 이름 앞에 GridV1을 사용하여 grid.dll에 있는 grid 컨트롤을 참조할 수 있습니다.
GridV1::Grid
또한 다음과 같이 컨트롤 이름 앞에 GridV2를 사용하여 grid20.dll에 있는 grid 컨트롤을 참조할 수도 있습니다.
GridV2::Grid