# 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çã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();
}