Condividi tramite


direttiva #using (C++)

Importare metadati in un programma compilato con /clr.

#using file [as_friend]

Parametri

  • file
    Un MSIL file DLL, EXE.netmodule, o obj.Di seguito è riportato un esempio:

    #using <MyComponent.dll>

  • as_friend
    Specifica che tutti i tipi in file accessibile.Per ulteriori informazioni, vedere assembly Friend (C++).

Note

file può essere un file di Microsoft Intermediate Language (MSIL) che si importano per i propri dati gestiti e non gestiti.Se un file DLL contiene un manifesto assembly, tutti i file .dll riferimento nel manifesto vengono importati e l'assembly che si sta compilando elencherà file nei metadati come riferimento all'assembly.

se file non contiene un assembly (se file è un modulo) e se non si intende utilizzare le informazioni sul tipo da modulo nell'applicazione corrente (assembly), è possibile semplicemente per indicare che il modulo fa parte dell'assembly; utilizzo /ASSEMBLYMODULE.I tipi nel modulo quindi sono disponibili per qualsiasi applicazione che fa riferimento all'assembly.

un'alternativa da utilizzare #using viene /FU opzione del compilatore.

assembly con estensione exe passati a #using deve essere compilato con /clr:safe o /clr:pure, o con uno degli altri compilatori di Visual Studio (Visual Basic o Visual c#, ad esempio.Si tenta di importare metadati da un assembly con estensione exe compilato con /clr genererà un'eccezione del caricamento del file.

[!NOTA]

Un componente cui viene fatto riferimento con #using può essere eseguita con una versione del file incluso in fase di compilazione, provocando un'applicazione client produrre risultati imprevisti.

Perché il compilatore sia in grado di riconoscere un tipo in un assembly (non in un modulo), è necessario imporre la risoluzione del tipo stesso. A tale scopo, è possibile definire un'istanza del tipo.La risoluzione dei nomi dei tipi in un assembly da parte del compilatore può avvenire anche con altre modalità. Se, ad esempio, si eredita da un tipo in un assembly, il nome del tipo risulterà noto al compilatore.

Quando si importano i metadati compilati dal codice sorgente che conteneva __declspec (thread), la semantica del thread non persistente nei metadati.Ad esempio, una variabile dichiarata con __declspec (thread), compilato in un programma che viene compilato per Common Language Runtime di .NET Framework e quindi incluso via #using, in non avrà __declspec (thread) semantica della variabile.

Tutti i tipi importati (sia gestito e nativo) in un file fa riferimento #using sono disponibili, ma i tipi nativi del compilatore tratta come definizioni delle dichiarazioni non.

mscorlib.dll automaticamente viene fatto riferimento quando si esegue la compilazione con /clr.

La variabile di ambiente LIBPATH specifica le directory in cui verranno cercati quando il compilatore tenta di risolvere i nomi file passati a #using.

Il compilatore effettuerà la ricerca dei riferimenti lungo il percorso seguente:

  • un percorso specificato in #using istruzione.

  • La directory corrente.

  • la directory di sistema di .NET Framework.

  • directory aggiunte con /AI opzione del compilatore.

  • Directory nella variabile di ambiente LIBPATH.

Esempio

Se si compila un assembly (C) e fa riferimento a un assembly (B) che fa riferimento a un altro assembly (), non sarà necessario in modo esplicito fare riferimento all'assembly A meno che in modo esplicito utilizzare uno di un tipo in 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() {}
};

Nell'esempio seguente, non esiste alcun errore del compilatore per non fare riferimento using_assembly_A.dll perché il programma non utilizza uno dei tipi definiti in using_assembly_A.cpp.

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

Vedere anche

Riferimenti

Direttive per il preprocessore