Share via


Arahan #using (C++/CLI)

Mengimpor metadata ke dalam program yang dikompilasi dengan /clr.

Sintaks

#usingfile [as_friend]

Parameter

file
Bahasa perantara Microsoft (MSIL) .dll, , .exe, .netmodule, atau .obj file. Contohnya,

#using <MyComponent.dll>

as_friend
Menentukan bahwa semua tipe dalam file dapat diakses. Untuk informasi selengkapnya, lihat Rakitan Teman (C++).

Keterangan

file dapat menjadi file bahasa perantara Microsoft (MSIL) yang Anda impor untuk data terkelola dan konstruksi terkelolanya. Jika DLL berisi manifes rakitan, maka semua DLL yang direferensikan dalam manifes diimpor. Rakitan yang Anda buat akan mencantumkan file dalam metadata sebagai referensi perakitan.

Mungkin file tidak berisi rakitan (file adalah modul), dan Anda tidak berniat menggunakan informasi jenis dari modul di aplikasi (rakitan) saat ini. Anda dapat menunjukkan modul adalah bagian dari perakitan dengan menggunakan /ASSEMBLYMODULE. Jenis dalam modul kemudian akan tersedia untuk aplikasi apa pun yang mereferensikan perakitan.

Alternatif untuk digunakan #using adalah opsi pengkompilasi /FU .

Rakitan .exe yang diteruskan ke #using harus dikompilasi dengan menggunakan salah satu kompilator .NET Visual Studio (Visual Basic atau Visual C#, misalnya). Mencoba mengimpor metadata dari rakitan .exe yang dikompilasi dengan /clr akan menghasilkan pengecualian beban file.

Catatan

Komponen yang direferensikan dengan #using dapat dijalankan dengan versi file yang berbeda yang diimpor pada waktu kompilasi, menyebabkan aplikasi klien memberikan hasil yang tidak terduga.

Agar pengkompilasi mengenali jenis dalam rakitan (bukan modul), pengkompilasi perlu dipaksa untuk menyelesaikan jenisnya. Anda dapat memaksanya, misalnya, dengan menentukan instans jenisnya. Ada cara lain untuk mengatasi nama jenis dalam rakitan untuk pengkompilasi. Misalnya, jika Anda mewarisi dari jenis dalam rakitan, nama jenis diketahui oleh pengkompilasi.

Saat mengimpor metadata yang dibangun dari kode sumber yang menggunakan __declspec(thread), semantik utas tidak bertahan dalam metadata. Misalnya, variabel yang dideklarasikan dengan __declspec(thread), dikompilasi dalam program yang dibangun untuk runtime bahasa umum .NET Framework, lalu diimpor melalui #using, tidak akan memiliki __declspec(thread) semantik pada variabel.

Semua jenis yang diimpor (baik terkelola maupun asli) dalam file yang direferensikan oleh #using tersedia, tetapi pengkompilasi memperlakukan jenis asli sebagai deklarasi, bukan definisi.

mscorlib.dll secara otomatis direferensikan saat mengkompilasi dengan /clr.

Variabel lingkungan LIBPATH menentukan direktori yang akan dicari ketika pengkompilasi menyelesaikan nama file yang diteruskan ke #using.

Pengkompilasi mencari referensi di sepanjang jalur berikut:

  • Jalur yang ditentukan dalam #using pernyataan.

  • Direktori saat ini.

  • Direktori sistem .NET Framework.

  • Direktori ditambahkan dengan /AI opsi pengkompilasi.

  • Direktori pada variabel lingkungan LIBPATH.

Contoh

Anda dapat membangun rakitan yang mereferensikan rakitan kedua yang sendiri mereferensikan rakitan ketiga. Anda hanya perlu secara eksplisit mereferensikan rakitan ketiga dari yang pertama jika Anda secara eksplisit menggunakan salah satu jenisnya.

File sumber using_assembly_A.cpp:

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

File sumber using_assembly_B.cpp:

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

Dalam sampel berikut, ada pengkompilasi tidak melaporkan kesalahan tentang merujuk using_assembly_A.dll, karena program tidak menggunakan salah satu jenis yang ditentukan dalam using_assembly_A.cpp.

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

Baca juga

Arahan pra-prosesor