Compartilhar via


# usando diretiva (C++)

Importa metadados para um programa compilado com /clr.

#using file [as_friend]

Parâmetros

  • file
    Um arquivo. dll MSIL,. exe.netmodule, ou. obj.Por exemplo,

    #using <MyComponent.dll>

  • as_friend
    Especifica que todos os tipos em file são acessíveis.Para obter mais informações, consulte Friend Assemblies (C++).

Comentários

filepode ser Microsoft intermediate language (MSIL) que você importar para seus dados gerenciados e construções gerenciadas.Se um arquivo. dll contém um manifesto do assembly, e em seguida, todos os. DLLs referenciado no manifesto são importados e o assembly que você está criando irá listar arquivo nos metadados como uma referência de assembly.

Se file não contém um assembly (se file é um módulo) e se você pretende usar informações de tipo de módulo no aplicativo atual (assembly), você tem a opção de que indica que o módulo faz parte o assembly. Use /ASSEMBLYMODULE.Os tipos no módulo, em seguida, estaria disponíveis para qualquer aplicativo que mencionado o assembly.

Uma alternativa para usar #using é o /FU opção de compilador.

assemblies do. exe é passado para #using deve ser compilada com /clr:safe ou /clr:pure, ou com qualquer um dos outros Visual Studio compiladores (Visual Basic ou Visual C#, por exemplo).Tentativa de importar metadados de um assembly. exe compilado com /clr resultará em uma exceção ao carregar o arquivo.

ObservaçãoObservação

Um componente que é referenciado com #using pode ser executado com uma versão diferente do arquivo importado em tempo de compilação, fazendo com que um aplicativo de cliente dar resultados inesperados.

Para o compilador reconhecer um tipo em um assembly (e não em um módulo), ele precisa ser forçado a resolver o tipo, o que pode ser feito, por exemplo, definindo uma instância do tipo.Existem outras maneiras de resolver nomes de tipo em um assembly para o compilador, por exemplo, se você herdar de um tipo em um assembly, o nome do tipo será, em seguida, tornar-se conhecido do compilador.

Ao importar metadados criados a partir de código-fonte que usado __declspec(thread), a semântica de thread não é mantida nos metadados.Por exemplo, uma variável declarada com __declspec(thread), compilado em um programa que é a compilação para o.NET Framework common language runtime e, em seguida, importados por meio de #using, não terá mais __declspec(thread) semântica na variável.

Todos importados tipos (gerenciados e nativos) em um arquivo referenciado por #using estão disponíveis, mas o compilador trata tipos nativos como declarações não definições.

mscorlib. dll é feita automaticamente durante a compilação com /clr.

A variável de ambiente LIBPATH Especifica as pastas que serão pesquisadas quando o compilador tenta resolver nomes de arquivo passaram para #using.

O compilador irá procurar por referências ao longo do caminho a seguir:

  • O caminho especificado na #using instrução.

  • O diretório atual.

  • A.Diretório de sistema do NET Framework.

  • Diretórios adicionados com o /AI opção de compilador.

  • Pastas na variável de ambiente LIBPATH.

Exemplo

Se você cria um assembly (C) e consultar um assembly (B) que se faz referência a outro assembly (A), você não terá que fazer referência a assembly explicitamente a menos que você use um do explicitamente tipos em 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() {}
};

No exemplo a seguir, não há nenhum erro de compilador para a referência não using_assembly_A.dll porque o programa não usa qualquer um dos tipos definidos no using_assembly_A.cpp.

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

Consulte também

Referência

Diretivas de pré-processador