Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Artikel ini menjelaskan cara membuat rakitan multifile dan menyediakan kode yang mengilustrasikan setiap langkah dalam prosedur.
Nota
Visual Studio IDE untuk C# dan Visual Basic hanya dapat digunakan untuk membuat rakitan file tunggal. Jika Anda ingin membuat rakitan multifile, Anda harus menggunakan pengkompilasi baris perintah atau Visual Studio dengan Visual C++. Rakitan multifile hanya didukung oleh .NET Framework.
Membuat rakitan multifile
Kompilasi semua file yang berisi namespace yang dirujuk oleh modul lain dalam rakitan ke dalam modul kode. Ekstensi default untuk modul kode adalah .netmodule.
Misalnya,
Stringerfile memiliki namespace yang disebutmyStringer, yang mencakup kelas yang disebutStringer. KelasStringerberisi metode yang disebutStringerMethodyang menulis satu baris ke konsol.// Assembly building example in the .NET Framework. using namespace System; namespace myStringer { public ref class Stringer { public: void StringerMethod() { System::Console::WriteLine("This is a line from StringerMethod."); } }; }// Assembly building example in the .NET Framework. using System; namespace myStringer { public class Stringer { public void StringerMethod() { System.Console.WriteLine("This is a line from StringerMethod."); } } }' Assembly building example in the .NET Framework. Namespace myStringer Public Class Stringer Public Sub StringerMethod() System.Console.WriteLine("This is a line from StringerMethod.") End Sub End Class End NamespaceGunakan perintah berikut untuk mengkompilasi kode ini:
cl /clr:pure /LN Stringer.cppcsc /t:module Stringer.csvbc /t:module Stringer.vbMenentukan parameter modul dengan
/t:opsi pengkompilasi menunjukkan bahwa file harus dikompilasi sebagai modul daripada sebagai rakitan. Kompilator menghasilkan modul yang disebut Stringer.netmodule, yang dapat ditambahkan ke perakitan.Kompilasi semua modul lain, menggunakan opsi pengkompilasi yang diperlukan untuk menunjukkan modul lain yang dirujuk dalam kode. Langkah ini menggunakan
/addmoduleopsi pengkompilasi.Dalam contoh berikut, modul kode yang disebut Klien memiliki metode titik
Mainmasuk yang mereferensikan metode dalam modul Stringer.netmodule yang dibuat di langkah 1.#using "Stringer.netmodule" using namespace System; using namespace myStringer; //The namespace created in Stringer.netmodule. ref class MainClientApp { // Static method Main is the entry point method. public: static void Main() { Stringer^ myStringInstance = gcnew Stringer(); Console::WriteLine("Client code executes"); myStringInstance->StringerMethod(); } }; int main() { MainClientApp::Main(); }using System; using myStringer; class MainClientApp { // Static method Main is the entry point method. public static void Main() { Stringer myStringInstance = new Stringer(); Console.WriteLine("Client code executes"); myStringInstance.StringerMethod(); } }Imports myStringer Class MainClientApp ' Static method Main is the entry point method. Public Shared Sub Main() Dim myStringInstance As New Stringer() Console.WriteLine("Client code executes") myStringInstance.StringerMethod() End Sub End ClassGunakan perintah berikut untuk mengkompilasi kode ini:
cl /clr:pure /FUStringer.netmodule /LN Client.cppcsc /addmodule:Stringer.netmodule /t:module Client.csvbc /addmodule:Stringer.netmodule /t:module Client.vb/t:moduleTentukan opsi karena modul ini akan ditambahkan ke rakitan di langkah mendatang./addmoduleTentukan opsi karena kode di Klien mereferensikan namespace yang dibuat oleh kode di Stringer.netmodule. Pengkompilasi menghasilkan modul yang disebut Client.netmodule yang berisi referensi ke modul lain, Stringer.netmodule.Nota
Pengkompilasi C# dan Visual Basic mendukung pembuatan rakitan multifile secara langsung menggunakan dua sintaks berbeda berikut.
Dua kompilasi membuat rakitan dua file:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /t:module Stringer.cs csc Client.cs /addmodule:Stringer.netmodulevbc /t:module Stringer.vb vbc Client.vb /addmodule:Stringer.netmoduleSatu kompilasi membuat rakitan dua file:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.csvbc /out:Client.exe Client.vb /out:Stringer.netmodule Stringer.vbGunakan Assembly Linker (Al.exe) untuk membuat file output yang berisi manifes perakitan. File ini berisi informasi referensi untuk semua modul atau sumber daya yang merupakan bagian dari perakitan.
Di Command Prompt, ketik perintah berikut:
al< nama modul><nama modul> …/main:< nama metode>/out:<nama file>/target:<jenis file rakitan>Dalam perintah ini, argumen nama modul menentukan nama setiap modul untuk disertakan dalam rakitan. Opsi
/main:menentukan nama metode yang merupakan titik masuk assembly. Opsi/out:menentukan nama file output, yang berisi metadata rakitan. Opsi/target:menentukan bahwa rakitan adalah file aplikasi konsol yang dapat dieksekusi (.exe), file Windows executable (.win), atau file pustaka (.lib).Dalam contoh berikut, Al.exe membuat rakitan yang merupakan aplikasi konsol yang dapat dieksekusi yang disebut myAssembly.exe. Aplikasi ini terdiri dari dua modul yang disebut Client.netmodule dan Stringer.netmodule, dan file yang dapat dieksekusi yang disebut myAssembly.exe, yang hanya berisi metadata rakitan. Titik masuk assembly adalah metode
Maindalam kelasMainClientApp, yang terletak di Client.dll.al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exeAnda dapat menggunakan Il Disassembler (Ildasm.exe) untuk memeriksa konten perakitan, atau menentukan apakah file adalah rakitan atau modul.