Kami memiliki masalah yang sama karena kami memiliki 109 proyek terpisah untuk ditangani. Untuk menjawab pertanyaan asli berdasarkan pengalaman kami:
1. Bagaimana cara terbaik menangani referensi antar proyek
Kami menggunakan opsi menu konteks 'tambahkan referensi'. Jika 'proyek' dipilih, ketergantungan akan ditambahkan ke file solusi global tunggal kami secara default.
2. Apakah "salin lokal" harus aktif atau nonaktif?
Off dalam pengalaman kami. Penyalinan ekstra hanya menambah waktu pembuatan.
3. Haruskah setiap proyek dibangun ke foldernya sendiri, atau haruskah semuanya dibangun ke folder output yang sama (semuanya adalah bagian dari aplikasi yang sama)
Semua keluaran kita disimpan dalam satu folder bernama 'bin'. Idenya adalah bahwa folder ini sama dengan saat perangkat lunak digunakan. Ini membantu mencegah masalah yang terjadi saat penyiapan pengembang berbeda dari penyiapan penerapan.
4. Apakah folder solusi merupakan cara yang baik untuk mengatur barang?
Tidak dalam pengalaman kami. Struktur folder satu orang adalah mimpi buruk orang lain. Folder yang sangat bersarang hanya menambah waktu yang dibutuhkan untuk menemukan apa pun. Kami memiliki struktur yang benar-benar datar tetapi memberi nama file proyek, rakitan, dan ruang nama kami sama.
Cara kami menyusun proyek bergantung pada satu file solusi. Membangun ini membutuhkan waktu lama, bahkan jika proyeknya sendiri tidak berubah. Untuk membantu dengan ini, kami biasanya membuat file solusi 'set kerja saat ini' lainnya. Setiap proyek yang sedang kami kerjakan ditambahkan ke dalamnya. Waktu pembuatan jauh lebih baik, meskipun satu masalah yang kita lihat adalah bahwa Intellisense gagal untuk tipe yang ditentukan dalam proyek yang tidak ada dalam kumpulan saat ini.
Contoh sebagian dari tata letak solusi kami:
\bin
OurStuff.SLN
OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]