다음을 통해 공유


# 지시문 (c)

컴파일된 프로그램에 메타 데이터를 가져옵니다 /clr.

#using file [as_friend]

매개 변수

  • file
    MSIL.dll,.exe.netmodule을 나. 사항은.obj다음 예제를 참조하십시오.

    #using <MyComponent.dll>

  • as_friend
    모든가 형식으로 지정 합니다. file 액세스할 수 있습니다.자세한 내용은 Friend 어셈블리 (C++)를 참조하십시오.

설명

file가져올 Microsoft 중간 언어 (MSIL) 파일의 관리 되는 데이터 및 관리 되는 구문에 대 한 수 있습니다..Dll 파일은 어셈블리 매니페스트를 포함 한 다음 가져옵니다 매니페스트에서 참조 하는 모든.dll을 빌드할 어셈블리를 나열 합니다 경우 파일 어셈블리 참조의 메타 데이터에서입니다.

경우 file 어셈블리에 포함 되어 있지 않습니다 (경우 file 모듈)와 현재 (어셈블리) 응용 프로그램에서 모듈의 형식 정보를 사용 하려는 경우 단순히 모듈 부품 어셈블리; 하다 수 있습니다. 사용 하 여 저장 됩니다.모듈에서 형식을 다음 어셈블리를 참조 하는 모든 응용 프로그램에 사용할 수 있습니다.

사용 하는 대신 #using 되는 /FU 컴파일러 옵션.

.exe 어셈블리가 전달 합니다 #using 컴파일해야 할 /clr:safe 또는 /clr:pure, 또는 다른 Visual Studio 컴파일러 (Visual Basic 또는 Visual C#, 예를 들어)를 사용 합니다.사용 하 여 컴파일한.exe 어셈블리에서 메타 데이터를 가져오려면 시도 /clr 파일 로드 예외가 발생 합니다.

[!참고]

구성 요소를 참조 하는 #using 클라이언트 응용 프로그램을 예기치 않은 결과가 발생 하는 컴파일 타임에 가져온 파일의 다른 버전을 실행할 수 있습니다.

컴파일러가 모듈이 아니라 어셈블리에서 특정 형식을 인식하려면 해당 형식을 확인할 수 있어야 합니다. 예를 들면, 해당 형식의 인스턴스를 정의하여 형식을 확인할 수 있습니다.컴파일러는 다른 방법을 사용하여 어셈블리에서 형식 이름을 확인할 수 있습니다. 예를 들어, 어셈블리에서 특정 형식을 상속하면 해당 형식 이름이 컴파일러에 전달됩니다.

사용 되는 소스 코드에서 기본 제공 메타 데이터를 가져올 때 __declspec, 스레드 의미 메타 데이터에 유지 되지 않습니다.로 선언 된 변수는 예를 들어, __declspec, 컴파일된 프로그램에 대 한 빌드에는.NET Framework 공용 언어 런타임 및 다음을 통해 가져온 #using를 더 이상 __declspec 변수를 의미 합니다.

모든 가져온 형식 (네이티브 및 관리 되는)에 의해 참조 된 파일 #using 은 사용할 수 있지만 컴파일러 처리 네이티브 형식 정의가 없습니다 선언으로.

mscorlib.dll 자동 참조로 컴파일하는 경우 /clr.

LIBPATH 환경 변수는 컴파일러도 전달 된 파일 이름을 확인 하려고 하면 검색할 디렉터리 지정 #using.

컴파일러에 대 한 참조는 다음과 같은 경로 따라 검색 합니다.

  • 지정 된 경로 #using 문의입니다.

  • 현재 디렉터리

  • 해당 합니다.NET Framework 시스템 디렉터리입니다.

  • 추가 디렉터리를 /AI 컴파일러 옵션.

  • LIBPATH 환경 변수를 디렉터리입니다.

예제

(C) 어셈블리를 구축 하 고 (B) 자신 (A) 다른 어셈블리를 참조 하는 어셈블리를 참조할 경우 A의 중 하나를 명시적으로 사용 하지 않으면 어셈블리 A를 명시적으로 참조할 필요가 없습니다 종류 c

// using_assembly_A.cpp
// compile with: /clr /LD
public ref class A {};

// using_assembly_B.cpp
// compile with: /clr /LD
#using "using_assembly_A.dll"
public ref class B {
public:
   void Test(A a) {}
   void Test() {}
};

다음 샘플에서는 프로그램에서 using_assembly_a.cpp에 정의 된 형식을 사용 하지 않으므로 using_assembly_a.dll를 참조에 대 한 없음 컴파일러 오류가입니다.

// using_assembly_C.cpp
// compile with: /clr
#using "using_assembly_B.dll"
int main() {
   B b;
   b.Test();
}

참고 항목

참조

전처리기 지시문