# za pomocą dyrektywy (C++)
Importuje metadanych do programu skompilowanego z /CLR.
#using file [as_friend]
Parametry
file
Instrukcje MSIL .dll, .exe.netmodule, lub. celNa przykład,#using <MyComponent.dll>
as_friend
Określa, że wszystkie rodzaje w file są dostępne.Aby uzyskać więcej informacji, zobacz Zespoły Friend (C++).
Uwagi
filemoże być Microsoft intermediate language (MSIL) plik importowania danych zarządzanych i konstrukcje zarządzanych.Jeśli plik .dll zawiera manifest zestawu, a następnie wszystkich bibliotek DLL, do którego odwołuje się manifest są importowane i wyświetli listę zgromadzenie buduje się pliku w metadanych jako odwołanie do zestawu.
Jeśli file nie zawiera zestawu (Jeśli file jest modułem) i jeśli nie zamierzasz użyć typu informacji z modułu w bieżącej aplikacji (montaż), masz możliwość tylko wskazujące, że moduł jest częścią zestawu; Użyj /ASSEMBLYMODULE.Typy w module będzie wówczas dostępne dla innych aplikacji, do którego odwołuje się zgromadzenie.
Zamiast używać #using jest /FU opcję kompilatora.
zespoły .exe przekazany do #using , powinny zostać opracowane z /clr:safe lub /clr:pure, lub dowolne inne kompilatory Visual Studio (Visual Basic lub Visual C#, na przykład).Próby zaimportowania metadanych z zestawu exe skompilowany z /clr spowoduje wyjątek ładowania pliku.
[!UWAGA]
Składnik, do którego odwołuje się z #using mogą być uruchamiane za pomocą innej wersji pliku przywożone w czasie kompilacji, powodując aplikacji klienta dać nieoczekiwane wyniki.
Aby kompilator rozpoznawał typu w zestawie (nie moduł) musi być zmuszona do rozwiązania typu, co można zrobić, na przykład przez określenie wystąpienia tego typu.Istnieją inne sposoby rozpoznawania nazw typu w zestawie dla kompilatora, na przykład, jeśli dziedziczą z typu w zestawie, wpisz nazwę następnie będzie stają się znane w kompilatorze.
Podczas importowania metadanych zbudowany z kodu źródłowego, która używana __declspec(thread), semantyki wątek nie są zachowywane w metadanych.Na przykład Zmienna zadeklarowana z __declspec(thread), skompilowany w programie, który jest kompilacją dla.NET Framework aparatu plików wykonywalnych języka wspólnego, a następnie importować za pomocą #using, nie będzie już mieć __declspec(thread) semantykę zmiennych.
Importowane wszystkie typy (zarządzane i macierzystym) w pliku, do którego odwołuje się przez #using są dostępne, ale kompilator traktuje typów macierzystego jako deklaracje nie definicje.
mscorlib.dll automatycznie odwołuje się podczas kompilowania z /clr.
Zmienna środowiskowa LIBPATH Określa katalogi, które będą przeszukiwane, gdy kompilator próbuje rozpoznać nazwy plików są przekazywane do #using.
Kompilator będzie szukał odniesienia w następującej ścieżce:
Ścieżka określona w #using instrukcji.
Bieżący katalog.
.NET Framework w katalogu systemowym.
Katalogi, dodaje się /AI opcję kompilatora.
Katalogów w zmiennej środowiskowej LIBPATH.
Przykład
Jeśli Konstruuj zespół (C) i odwołać zestawu (B), że sama odwołuje się do innego zestawu (A), nie będzie mieć jawnego odniesienia a zestawu, chyba że jeden a jawnie używać typów w 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() {}
};
W następującym przykładzie nie istnieje żaden błąd kompilatora odwołania nie using_assembly_A.dll, ponieważ program nie używać żadnego z typów określonych w using_assembly_A.cpp.
// using_assembly_C.cpp
// compile with: /clr
#using "using_assembly_B.dll"
int main() {
B b;
b.Test();
}