Proses kompilasi file .cs menjadi .dll menggunakan perintah csc
Seringkali, kita perlu mengkompilasi file .cs secara terpisah menjadi file .dll. Pengoperasiannya adalah sebagai berikut:
Buka jendela perintah->masukkan cmd ke konsol->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322
Masuk ke direktori tempat vs.net diinstal -> jalankan perintah csc csc /target:library File.cs -> buat file .dll dengan nama yang sesuai di direktori (prasyarat: letakkan file .cs di C: Direktori WINDOWS Microsoft.NETFrameworkv1.1.4322)
Ada banyak cara untuk menggunakan perintah csc, silahkan simak berikut ini
Terjemahkan File.cs untuk menghasilkan File.exe
csc File.cs mengkompilasi File.cs untuk menghasilkan File.dll
csc /target:library File.cs Kompilasi File.cs dan buat My.exe
csc /out:My.exe File.cs Mengkompilasi semua file C# di direktori saat ini menggunakan optimasi dan mendefinisikan simbol DEBUG. Outputnya adalah File2.exe
csc /define:DEBUG /optimize /out:File2.exe *.cs Mengkompilasi semua file C# di direktori saat ini untuk menghasilkan versi debug File2.dll. Jangan tampilkan logo atau peringatan apa pun
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs Kompilasi semua file C# di direktori saat ini ke dalam Something.xyz (DLL)
csc /target:library /out:Something.xyz *.cs Kompilasi File.cs untuk menghasilkan File.dll
csc /target:library File.cs adalah perintah yang paling umum digunakan. Sebenarnya, perintah ini dapat ditulis dengan mudah sebagai csc /t:library File.cs mycodebehind.cs , Anda dapat menentukan sendiri nama file keluarannya.
csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs, fungsinya untuk menginstal dua file cs menjadi satu file .dll
Contoh (diambil dari Internet)
1. Pustaka tautan dinamis
Apa itu perpustakaan tautan dinamis? Tiga huruf DLL pasti sudah tidak asing lagi bagi Anda. Ini adalah singkatan dari Dynamic Link Library. Dynamic Link Library (DLL) adalah file yang dapat dieksekusi yang merupakan perpustakaan fungsi bersama. Penautan dinamis menyediakan cara bagi suatu proses untuk memanggil fungsi yang bukan bagian dari kode yang dapat dieksekusi. Kode yang dapat dieksekusi untuk suatu fungsi terletak di DLL yang berisi satu atau lebih fungsi yang telah dikompilasi, ditautkan, dan disimpan secara terpisah dari proses yang menggunakannya. DLL juga membantu dalam berbagi data dan sumber daya. Beberapa aplikasi dapat mengakses konten dari satu salinan DLL di memori secara bersamaan.
Seperti kebanyakan programmer, Anda pasti sering menggunakan DLL. Pernahkah Anda merasa bahwa hal itu memberi Anda kesalahan baik dalam pemrograman dan pengkodean? Hari ini saya ingin mendiskusikan sebuah topik dengan Anda: cara membuat dan memanggil DLL (perpustakaan tautan dinamis) di C#. Sebenarnya, dalam arti luas, DLL Memungkinkan saya untuk mengatur dan menulis aplikasi kami dengan lebih fleksibel. Sebagai perancang perangkat lunak, saya dapat mencapai efek penggunaan kembali kode yang tinggi berdasarkan itu. Izinkan saya memperkenalkan cara membuat dan memanggil DLL di C#.
2. Pekerjaan persiapan
Kita perlu memberikan pengenalan singkat tentang apa yang akan kita lakukan selanjutnya. Pada artikel ini kita akan menggunakan bahasa C# untuk membuat pustaka tautan dinamis bernama MyDLL.DLL. Salah satunya adalah Tukarkan nilai dua parameter. Fungsi lainnya adalah mencari pembagi persekutuan terbesar dari dua parameter. Kemudian buat aplikasi untuk menggunakan DLL ini. Jalankan dan keluarkan hasilnya.
3. Buat DLL
Mari buat tiga file kode C# berikut:
1. Tukar Saya.cs
}
menggunakan Sistem;
namespace Metode Saya
{
SwapClass kelas publik
{
Swap bool statis publik (ref panjang i,ref panjang j)
{
saya = saya+j;
j = ij;
saya = sayaj;
kembali benar;
}
}
}
2. MyMaxCD.cs
menggunakan Sistem;
namespace Metode Saya
{
kelas publik MaxCDClass
{
MaxCD panjang statis publik (panjang i, panjang j)
{
panjang a,b,temp;
jika(i>j)
{
a = saya;
b = j;
}
kalau tidak
{
b = saya;
a = j;
}
suhu = a %b;
sementara(suhu!=0)
{
a = b;
b = suhu;
suhu = a %b;
}
kembali b;
}
}
}
Perlu diperhatikan bahwa ketika kita membuat kedua file ini, kita dapat menggunakan Visual Studio.NET atau editor teks lainnya, bahkan Notepad. Meskipun kedua file ini tidak berada dalam file yang sama, keduanya berada dalam namespace yang sama, yang akan memudahkan kita menggunakan kedua metode ini di masa mendatang. Tentu saja, mereka juga dapat berasal dari namespace yang berbeda, dan itu tidak masalah, tetapi kita hanya perlu mereferensikan dua namespace yang berbeda saat kita menerapkannya, jadi penulis menyarankan agar lebih baik menuliskannya di bawah satu namespace.
Tugas selanjutnya adalah mengubah kedua file cs ini menjadi file DLL yang kita perlukan. Caranya begini: Pada sistem operasi yang terinstal Microsoft.NET Framework, kita bisa menemukan direktori Microsoft.NET di direktori tempat Windows berada. Kompiler C# disediakan di bawah direktori ini. Jalankan CSC.EXE: csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs. Setelah selesai, Anda dapat menemukan file MyDLL.DLL yang baru saja kita buat di direktori ini. Opsi kompiler /target:library memberitahu kompiler untuk mengeluarkan file DLL, bukan file EXE. Opsi kompiler /out diikuti dengan nama file menentukan nama file DLL. Jika /out tidak diikuti dengan nama file, kompiler akan menggunakan file pertama (MySwap.cs) sebagai nama file DLL. File yang dihasilkan adalah file MySwap.DLL.
Oke! Tugas kita membuat file perpustakaan tautan dinamis telah selesai. Sekarang saatnya kita menikmati hasil kerja kita. Di bawah ini saya akan memperkenalkan cara menggunakan file perpustakaan tautan dinamis yang kita buat. 4. Menggunakan DLL Kita cukup menulis sebuah program kecil untuk menguji apakah kedua metode yang baru kita tulis sudah benar. Oke, ikuti saya:
Klien Saya.cs
menggunakan Sistem;
menggunakan MyMethods; //Di sini kita mengacu pada namespace yang baru saja didefinisikan. Jika kita menulis dua file tadi dalam dua namespace yang berbeda
kelas Klien Saya
{
public static void Utama (string[] args)
{
if (args.Panjang!= 2)
{
Console.WriteLine("Penggunaan: Klien Saya
kembali;
}
panjang num1 = panjang.Parse(args[0]);
panjang num2 = panjang.Parse(args[1]);
SwapClass.Swap(ref nomor1,ref nomor2);
// Perhatikan bahwa arahan penggunaan di awal file memungkinkan Anda menggunakan nama kelas yang tidak memenuhi syarat untuk mereferensikan metode DLL pada waktu kompilasi
Console.WriteLine("Hasil swap adalah num1 = {0} dan num2 ={1}",num1, num2);
long maxcd = MaxCDClass.MaxCD(angka1,angka2);
Console.WriteLine("MaxCD dari {0} dan {1} adalah {2}",num1, num2, maxcd);
}
}
Untuk menghasilkan MyClient.exe yang dapat dieksekusi, gunakan baris perintah berikut:
csc /keluar:Klien Saya.exe /referensi:DLL Saya.DLL Klien Saya.cs
Opsi kompiler /out memberitahu kompiler untuk mengeluarkan file EXE dan menentukan nama file keluaran (MyClient.exe). Opsi kompiler /reference menentukan file DLL yang direferensikan oleh program.
5. Eksekusi
Untuk menjalankan program, masukkan nama file EXE diikuti dua angka, misalnya: MyClient 123 456
6. Keluaran
Hasil swapnya adalah angka1 = 456 dan angka2 = 123
Max CD 456 dan 123 adalah 3
7. Ringkasan
Tautan dinamis memiliki keuntungan sebagai berikut:
1. Menghemat memori dan mengurangi operasi swap. Banyak proses yang dapat menggunakan DLL secara bersamaan, berbagi salinan DLL di memori. Sebaliknya, untuk setiap aplikasi yang dibangun dengan perpustakaan yang tertaut secara statis, Windows harus memuat salinan kode perpustakaan di memori.
2. Menghemat ruang disk. Banyak aplikasi yang dapat membagikan salinan DLL pada disk. Sebaliknya, setiap aplikasi yang dibuat dengan pustaka yang ditautkan secara statis memiliki kode pustaka yang ditautkan ke dalam gambar yang dapat dieksekusi sebagai salinan terpisah. 3. Lebih mudah untuk mengupgrade ke DLL. Ketika fungsi dalam DLL berubah, aplikasi yang menggunakannya tidak perlu dikompilasi ulang atau ditautkan ulang selama parameter fungsi dan nilai kembalian tidak berubah. Sebaliknya, kode objek yang ditautkan secara statis mengharuskan aplikasi ditautkan kembali ketika fungsi berubah.
4. Memberikan dukungan purna jual. Misalnya, driver monitor DLL dapat dimodifikasi untuk mendukung monitor yang tidak tersedia saat aplikasi pertama kali dikirimkan.
5. Mendukung program multi-bahasa. Program yang ditulis dalam bahasa pemrograman berbeda dapat memanggil fungsi DLL yang sama selama program tersebut mengikuti konvensi pemanggilan fungsi tersebut. Program dan fungsi DLL harus kompatibel sesuai urutan fungsi yang mengharapkan argumennya dimasukkan ke dalam tumpukan, apakah fungsi atau aplikasi bertanggung jawab untuk membersihkan tumpukan, dan apakah ada argumen yang diteruskan dalam register.
6. Menyediakan mekanisme untuk memperluas kelas perpustakaan MFC. Anda dapat memperoleh kelas dari kelas MFC yang ada dan menempatkannya di DLL ekstensi MFC untuk digunakan oleh aplikasi MFC.
7. Mempermudah pembuatan versi internasional. Dengan menempatkan sumber daya ke dalam DLL, membuat versi internasional aplikasi Anda menjadi lebih mudah. Anda dapat memasukkan string untuk setiap versi bahasa aplikasi Anda ke dalam file sumber daya DLL terpisah, dan membuat versi bahasa berbeda memuat sumber daya yang sesuai.
Salah satu potensi kelemahan penggunaan DLL adalah aplikasinya tidak mandiri; hal ini bergantung pada keberadaan modul DLL terpisah.