Baru-baru ini, kami memigrasikan hampir semua kode sumber di perusahaan saya menjadi satu solusi.
Mengapa?
Awalnya, kami memiliki banyak solusi. Beberapa proyek dari suatu solusi menggunakan kembali proyek-proyek dari yang lain, dan tidak ada yang peduli menggunakan manajer paket. Hari Anda secara substansial mengubah proyek yang digunakan hampir di mana-mana, mengharapkan jam kerja yang hilang untuk seluruh perusahaan selama beberapa hari atau minggu ke depan. Bagian terburuknya adalah Anda bahkan tidak tahu persis apa yang akan dipengaruhi oleh perubahan itu.
Menggabungkan semua kode menjadi satu solusi adalah alternatif. Ini berfungsi dengan baik untuk saat ini, dan dependensi sekarang mudah diikuti. Ingin memodifikasi metode tetapi juga melacak dampak perubahan ini di basis kode? Visual Studio dapat melakukannya dengan mudah. Bagi saya, ini sukses.
Integrasi berkelanjutan sekarang juga lebih mudah. Satu solusi untuk mengkompilasi dan menggunakan. Hampir tidak ada yang dikonfigurasi.
Apakah ini scalable?
Dari segi kinerja, saya sangat terkejut oleh Visual Studio . Saya pikir itu akan mulai menangis dengan solusi, katakanlah, 50 proyek. Saat ini, ada lebih dari 200 proyek; Visual Studio tampaknya cukup terukur untuk mengelolanya seolah-olah hanya ada 20 di antaranya. Ya, ada beberapa hal yang membutuhkan waktu. Jika Anda mengkompilasi ulang setiap proyek, dengan kontrak Kode, analisis Kode diaktifkan secara default, dll., Perkirakan itu akan memakan waktu. Tapi tidak ada yang akan mengharapkan untuk mengkompilasi 200 proyek secepat 10, dan omong-omong, Anda tidak boleh: ini adalah peran server integrasi berkelanjutan. Waktu mulai (mulai dingin, kemudian memuat solusinya) sangat cepat ; mungkin tidak secepat 10 proyek, tetapi masih sangat dapat diterima (di bawah 20 detik pada mesin yang dibeli lebih dari lima tahun yang lalu).
Untuk melangkah lebih jauh, membongkar proyek secara sistematis adalah ide yang bagus (dan sangat mudah ketika proyek disusun dalam direktori di dalam solusi). Jika seseorang mengerjakan sesuatu yang hanya memerlukan tiga proyek untuk dimuat, tidak perlu memuat semua 200 proyek (kecuali, tentu saja, ketergantungan mungkin terpengaruh).
Kontrol versi berfungsi seperti yang diharapkan juga (Saya menggunakan server SVN, jika itu penting). Saya belum bekerja di lingkungan konkuren yang nyata, dengan, katakanlah, puluhan pengembang sering melakukan kode, tetapi saya akan membayangkan bahwa ini tidak akan memiliki terlalu banyak masalah. Berhati-hatilah dengan kasus-kasus di mana banyak pengembang menambahkan proyek baru pada saat yang sama: menggabungkan file .sln bukan hal termudah untuk dilakukan.
Kesimpulan
Jika saya harus mengambil keputusan lagi:
Saya masih akan memigrasi semuanya menjadi satu solusi. Ini sangat mengurangi rasa sakit dari ketergantungan yang rusak, dan manfaat ini saja sangat berharga. Memiliki tempat yang terpusat untuk semua kode juga merupakan ide bagus; ini memungkinkan, misalnya, untuk mencari sesuatu di dalam Visual Studio. Saya juga dapat bekerja pada dua proyek yang terkait lemah, dan masih memiliki hanya satu jendela Visual Studio yang dibuka.
Saya juga akan mempelajari sedikit lebih banyak NuGet dan kemampuan untuk meng-host server NuGet pribadi. Mengelola dependensi melalui NuGet dapat menyelesaikan beberapa masalah ketika Anda tidak ingin menggabungkan beberapa proyek menjadi solusi bersama. Secara pribadi, saya tidak memiliki kasus seperti itu, tetapi saya membayangkan bahwa perusahaan lain mungkin memilikinya.
Akhirnya, berinvestasi dalam SSD untuk setiap pengembang dapat membuat perbedaan besar. Tetapi Anda tidak perlu, dan dalam kasus saya, basis kode masih disimpan pada hard drive biasa.