Saya memiliki proyek pembantu yang saya gunakan di semua aplikasi yang saya buat. Ini berisi beberapa metode ekstensi dan banyak kelas pembantu umum, kontrol dll. Saya memperbarui / memperpanjang proyek pembantu dari waktu ke waktu. Ini biasanya proyek-proyek kecil dan tidak terkait, dan saya adalah satu-satunya orang yang mengerjakan semuanya.
Saya mencoba dua pendekatan untuk menggunakannya
- tambahkan file .cs secara langsung (Tambahkan sebagai tautan) ke setiap proyek tempat saya menggunakannya
- kompilasi sebagai .dll dan tambahkan sebagai referensi
Saya melihat beberapa manfaat dan kelemahan dari pendekatan ini.
Yang pertama:
- lebih sederhana, karena kelas pembantu dikompilasi ke dalam file exe, oleh karena itu saya sering dapat dengan mudah menyediakan hanya satu file .exe yang akan berfungsi dengan baik. Karena saya menambahkan sebagai tautan, saya bisa sangat yakin bahwa setiap kali saya membangun proyek yang menggunakan helper, file helper akan menjadi versi terbaru.
- bahkan lebih sederhana, karena saya dapat memisahkan file, sehingga metode ekstensi saya yang berjalan dengan baik di. NET 4.0 dapat direferensikan secara terpisah dari yang membutuhkan. NET 4.5, yang berarti bahwa aplikasi secara keseluruhan dapat berjalan di. NET 4.0
- Memungkinkan untuk debug melalui kode, dengan semua manfaat breakpoints dll dll ...
- sepertinya bukan 'praktik terbaik'
Yang kedua:
- tampaknya merupakan pendekatan yang tepat, tetapi:
- mengharuskan saya untuk mengirimkan file .dll terpisah, yang karena alasan tertentu jauh lebih sulit bagi pengguna (mereka cenderung berbagi program saya tanpa .dll, yang kemudian macet saat startup)
- karena akan dikompilasi menjadi .dll tunggal, itu akan membutuhkan versi tertinggi dari .NET - banyak pengguna saya tidak memiliki .NET 4.5 dan hanya beberapa elemen dari kelas pembantu saya memerlukan ini, yang berarti saya dapat memaksa beberapa orang untuk memperbarui sistem mereka tanpa alasan
- Saya juga perlu memastikan bahwa setiap kali saya memperbarui salah satu program saya, saya juga mengirimkan file .dll - meskipun saya tidak tahu apakah itu telah diubah sejak versi terakhir, atau tidak (bisa saja, tetapi bisa juga versi yang sama). Saya tidak bisa melihat cara sederhana untuk menentukan itu, tanpa melacak versi perakitan, yang merupakan pekerjaan tambahan. Untuk saat ini, ketika saya memperbarui program saya, saya hanya memberikan exe yang diperbarui, dan saya ingin tetap kecil dan rendah hati.
Jadi, apa manfaat sebenarnya dari penggunaan file .dll di sini? Harap dicatat, bahwa saya adalah satu-satunya orang yang mengedit kode semua aplikasi dan file pembantu.
Juga, untuk memperjelas - aplikasi biasanya sangat sedikit, sedangkan kode yang terkandung dalam kelas helper sepenuhnya generik untuk mereka semua (beberapa perbandingan string sederhana, jalur atau operasi XML dll)
Sebenarnya, seseorang membuat saya sadar sekarang bahwa ada pilihan ketiga. Karena saya memiliki kode pembantu dalam proyek separte, saya dapat menambahkan proyek ini ke solusi masing-masing aplikasi saya yang terpisah - yang berfungsi seperti 'Tambahkan sebagai tautan' untuk file tunggal, kecuali saya hanya menambahkan satu proyek ... Tapi seperti yang diperhatikan oleh Doc Brown, ini pada dasarnya berarti bahwa .dll perlu ditambahkan ke proyek ...
Namun hal lain yang agak mendukung tidak menggunakan file dll adalah kemampuan untuk debug melalui kelas pembantu secara aktif ...