Saya melakukan pekerjaan untuk perusahaan yang ingin menempatkan semua. Net aplikasi mereka (aplikasi web, aplikasi Windows dan aplikasi konsol) bersama dalam satu solusi Visual Studio.
Saya mencari pengalaman dari pengembang yang menyusun aplikasi mereka sendiri dengan cara ini atau yang bekerja di perusahaan yang melakukan ini. Apakah ini ide yang bagus?
Apa pro / kontra untuk menempatkan semua aplikasi Anda dalam satu solusi daripada memiliki solusi terpisah untuk setiap aplikasi?
Seberapa cepat Visual Studio dengan solusi 20+ proyek?
Dan seberapa stabil file solusi dengan pengembangan bersamaan sumber-terkontrol?
.net
visual-studio
BruceHill
sumber
sumber
Jawaban:
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.
sumber
Ini adalah penggunaan yang dimaksudkan.
Dengan 20+ proyek ... mungkin tidak terlalu buruk. Saya telah melihat lebih banyak tanpa VS mengalami masalah. Cukup stabil / cepat. NAMUN ... jika itu adalah masalah, itu dapat dikurangi: buka .csproj di VS dan bekerja dari sana. Anda tidak mendapatkan manfaat dari memiliki semuanya dalam satu solusi, tetapi Anda selalu dapat membuka kembali sln ketika Anda perlu dan hanya bekerja di .csproj ketika Anda perlu (seperti yang Anda lakukan sekarang).
File solusi hanya berubah ketika Anda menambah / menghapus proyek atau objek tingkat solusi, sehingga jarang berubah. Itu xml, jadi Anda bisa melihat apa yang ada di dalamnya. Mereka jarang berubah.
sumber