Bagikan melalui


Rakitan di .NET

Rakitan membentuk unit dasar penyebaran, kontrol versi, penggunaan kembali, pelingkupan aktivasi, dan izin keamanan untuk aplikasi berbasis .NET. Assembly adalah kumpulan jenis dan sumber daya yang dibangun untuk bekerja sama dan membentuk unit fungsi logis. Rakitan mengambil bentuk file yang dapat dieksekusi (.exe) atau pustaka tautan dinamis (.dll), dan merupakan blok penyusun aplikasi .NET. Mereka menyediakan runtime bahasa umum dengan informasi yang perlu diperhatikan tentang implementasi jenis.

Di .NET dan .NET Framework, Anda dapat membuat assembly dari satu atau beberapa file kode sumber. Dalam .NET Framework, rakitan dapat berisi satu atau lebih modul. Hal ini memungkinkan proyek yang lebih besar untuk direncanakan sehingga beberapa pengembang dapat bekerja pada file kode sumber atau modul terpisah yang dikombinasikan untuk membuat assembly tunggal. Untuk mengetahui informasi selengkapnya tentang modul, lihat Cara: Membuat assembly multifile.

Rakitan memiliki properti berikut:

  • Rakitan diimplementasikan sebagai file .exe atau .dll.

  • Untuk pustaka yang menargetkan .NET Framework, Anda dapat berbagi rakitan antar aplikasi dengan menempatkannya di cache assembly global (GAC). Anda harus memiliki perakitan bernama kuat sebelum Anda dapat memasukkannya ke dalam GAC. Untuk mengetahui informasi selengkapnya, lihat Rakitan bernama kuat.

  • Assembly hanya dimuat ke dalam memori jika diperlukan. Jika tidak digunakan, assembly tidak dimuat. Artinya, rakitan dapat menjadi cara yang efisien untuk mengelola sumber daya dalam proyek yang lebih besar.

  • Anda dapat secara terprogram mendapatkan informasi tentang assembly dengan menggunakan refleksi. Untuk mengetahui informasi selengkapnya, lihat Reflection (C#) atau Reflection (Visual Basic).

  • Anda dapat memuat assembly hanya untuk memeriksanya dengan menggunakan MetadataLoadContext kelas di .NET dan .NET Framework. MetadataLoadContext menggantikan metode Assembly.ReflectionOnlyLoad.

Assembly dalam runtime bahasa umum

Assembly menyediakan runtime bahasa umum dengan informasi yang dibutuhkan untuk mengetahui jenis implementasi. Untuk runtime, jenis tidak ada di luar konteks perakitan.

Perakitan menentukan informasi berikut:

  • Kode yang dijalankan runtime bahasa umum. Perhatikan bahwa setiap assembly hanya dapat memiliki satu titik masuk: DllMain, WinMain, atau Main.

  • Batas keamanan. Assembly adalah unit di mana izin diminta dan diberikan. Untuk mengetahui informasi selengkapnya tentang batas keamanan dalam assembly, lihat Pertimbangan keamanan assembly.

  • Batas jenis. Identitas setiap jenis mencakup nama assembly tempat ia berada. Jenis yang disebut MyType yang dimuat dalam cakupan satu assembly tidak sama dengan jenis yang disebut MyType yang dimuat dalam cakupan assembly lain.

  • Batas cakupan referensi. Manifes assembly memiliki metadata yang digunakan untuk menyelesaikan jenis dan memenuhi permintaan sumber daya. Manifes menentukan jenis dan sumber daya untuk mengekspos di luar assembly, dan menyebutkan assembly lain yang menjadi dasarnya. Kode bahasa perantara Microsoft (MSIL) dalam file portabel yang dapat dieksekusi (PE) tidak akan dijalankan kecuali memiliki manifes assembly terkait.

  • Batas versi. Assembly adalah unit dengan versi terkecil dalam runtime bahasa umum. Semua jenis dan sumber daya dalam assembly yang sama dijadikan versi sebagai unit. Manifes assembly menjelaskan dependensi versi yang Anda tentukan untuk rakitan dependen apa pun. Untuk mengetahui informasi selengkapnya tentang penerapan versi, lihat Versi gambar.

  • Unit penyebaran. Ketika aplikasi dimulai, hanya assembly yang awalnya dipanggil aplikasi lah yang harus ada. Assembly lainnya seperti assembly yang berisi sumber daya pelokalan atau kelas utilitas dapat diambil sesuai permintaan. Hal ini memungkinkan aplikasi berukuran sederhana dan ringkas saat pertama kali diunduh. Untuk informasi selengkapnya tentang menyebarkan rakitan, lihat Menyebarkan aplikasi.

  • Unit eksekusi sisi ke sisi. Untuk mengetahui informasi selengkapnya tentang menjalankan beberapa versi assembly, lihat Assembly dan eksekusi sisi ke sisi.

Membuat perakitan

Assembly dapat bersifat statis atau dinamis. Rakitan statis disimpan pada disk dalam file portabel yang dapat dieksekusi (PE). Assembly statis dapat mencakup antarmuka, kelas, dan sumber daya seperti bitmap, file JPEG, dan file sumber daya lainnya. Anda juga dapat membuat assembly dinamis, yang dijalankan langsung dari memori dan tidak disimpan ke disk sebelum eksekusi. Anda dapat menyimpan assembly dinamis ke disk setelah dieksekusi.

Ada beberapa cara untuk membuat mesin virtual. Anda dapat menggunakan alat pengembangan, seperti Visual Studio, yang dapat membuat file .dll atau .exe. Anda dapat menggunakan alat di SDK Windows untuk membuat assembly dengan modul dari lingkungan pengembangan lainnya. Anda juga dapat menggunakan API runtime bahasa umum, seperti System.Reflection.Emit, untuk membuat assembly dinamis.

Kompilasi assembly dengan membangunnya di Visual Studio, membangunnya dengan alat antarmuka baris perintah .NET Core, atau membangun rakitan .NET Framework dengan penyusun baris perintah. Untuk informasi selengkapnya tentang membangun rakitan menggunakan .NET CLI, lihat gambaran umum .NET CLI.

Catatan

Untuk membuat assembly di Visual Studio, pada menu Bangun, pilih Bangun.

Manifes assembly

Setiap assembly memiliki file manifes assembly. Mirip dengan daftar isi, manifes assembly berisi:

  • Identitas assembly (nama dan versinya).

  • Tabel file yang menjelaskan semua file lain yang membentuk assembly, seperti assembly lain yang Anda buat yang diandalkan file .exe atau .dll, file bitmap, atau file Readme.

  • Daftar referensi assembly yang merupakan daftar semua dependensi eksternal, seperti .dllatau file lainnya. Referensi perakitan berisi referensi ke objek global dan privat. Objek global tersedia untuk semua aplikasi lainnya. Di .NET Core, objek global digabungkan dengan runtime .NET Core tertentu. Di .NET Framework, objek global berada di cache assembly global (GAC). System.IO.dll adalah contoh assembly di GAC. Objek privat harus berada di tingkat direktori pada atau di bawah direktori tempat aplikasi Anda diinstal.

Karena assembly berisi informasi tentang konten, pembuatan versi, dan dependensi, aplikasi yang menggunakannya tidak perlu bergantung pada sumber eksternal, seperti registri pada sistem Windows, untuk berfungsi dengan baik. Assembly mengurangi konflik .dll dan membuat aplikasi Anda lebih andal dan lebih mudah disebarkan. Dalam banyak kasus, Anda dapat menginstal aplikasi berbasis .NET hanya dengan menyalin filenya ke komputer target. Untuk informasi selengkapnya, lihat Manifes assembly.

Menambahkan referensi ke assembly

Untuk menggunakan assembly di suatu aplikasi, Anda harus menambahkan referensi. Setelah assembly direferensikan, semua jenis, properti, metode, dan anggota lain yang dapat diakses dari ruang namanya tersedia untuk aplikasi Anda seolah kode tersebut adalah bagian dari file sumber Anda.

Catatan

Sebagian besar assembly dari .NET Class Library direferensikan secara otomatis. Jika assembly sistem tidak direferensikan secara otomatis, tambahkan referensi dengan salah satu cara berikut:

  • Untuk .NET dan .NET Core, tambahkan referensi ke paket NuGet yang berisi assembly. Gunakan NuGet Package Manager di Visual Studio atau tambahkan elemen <PackageReference> untuk assembly ke proyek .csproj atau .vbproj.
  • Untuk .NET Framework, tambahkan referensi ke assembly menggunakan dailog Tambahkan Referensi di Visual Studio atau dengan menggunakan -reference opsi baris perintah untuk penyusun C# atau Visual Basic.

Di C #, Anda dapat menggunakan dua versi assembly yang sama dalam satu aplikasi. Untuk mengetahui informasi selengkapnya, lihat alias ekstern.

Judul Deskripsi
Konten assembly Elemen yang membentuk assembly.
Manifes assembly Data dalam manifes assembly, dan cara data disimpan dalam assembly.
Cache assembly global Cara GAC menyimpan dan menggunakan assembly.
Assembly bernama kuat Karakteristik assembly bernama kuat.
Pertimbangan keamanan assembly Cara kerja keamanan dengan assembly.
Penerapan versi assembly Gambaran umum kebijakan pembuatan versi .NET Framework.
Penempatan assembly Tempat menemukan assembly.
Assembly dan eksekusi sisi ke sisi Gunakan beberapa versi runtime atau assembly secara bersamaan.
Memancarkan metode dan assembly dinamis Cara membuat assembly dinamis.
Cara runtime menemukan assembly Cara .NET Framework menyelesaikan referensi assembly saat run time.

Referensi

System.Reflection.Assembly

Lihat juga