Chúng tôi gặp vấn đề tương tự vì chúng tôi có 109 dự án riêng biệt để giải quyết. Để trả lời các câu hỏi ban đầu dựa trên kinh nghiệm của chúng tôi:
1. Làm thế nào để bạn xử lý tốt nhất các tham chiếu giữa các dự án
Chúng tôi sử dụng tùy chọn menu ngữ cảnh 'thêm tài liệu tham khảo'. Nếu 'dự án' được chọn, thì phần phụ thuộc được thêm vào tệp giải pháp toàn cầu, duy nhất của chúng tôi theo mặc định.
2. Nên bật hay tắt "copy local"?
Theo kinh nghiệm của chúng tôi. Việc sao chép thêm chỉ làm tăng thêm thời gian xây dựng.
3. Mọi dự án nên xây dựng vào thư mục riêng của nó hay tất cả chúng nên xây dựng vào cùng một thư mục đầu ra (tất cả chúng đều là một phần của cùng một ứng dụng)
Tất cả đầu ra của chúng tôi được đặt trong một thư mục duy nhất được gọi là 'bin'. Ý tưởng là thư mục này giống như khi phần mềm được triển khai. Điều này giúp ngăn chặn các sự cố xảy ra khi thiết lập nhà phát triển khác với thiết lập triển khai.
4. Các thư mục giải pháp có phải là một cách tốt để sắp xếp công cụ không?
Theo kinh nghiệm của chúng tôi thì không. Cấu trúc thư mục của một người là cơn ác mộng của người khác. Các thư mục lồng nhau sâu chỉ làm tăng thời gian tìm kiếm bất cứ thứ gì. Chúng tôi có một cấu trúc hoàn toàn phẳng nhưng đặt tên cho các tệp dự án, tập hợp và không gian tên của chúng tôi giống nhau.
Cách cấu trúc các dự án của chúng tôi dựa trên một tệp giải pháp duy nhất. Việc xây dựng điều này mất nhiều thời gian, ngay cả khi bản thân các dự án không thay đổi. Để trợ giúp việc này, chúng tôi thường tạo một tệp giải pháp 'nhóm làm việc hiện tại' khác. Bất kỳ dự án nào chúng tôi đang thực hiện đều được thêm vào. Thời gian xây dựng được cải thiện đáng kể, mặc dù một vấn đề mà chúng tôi đã thấy là Intellisense không thành công đối với các loại được xác định trong các dự án không có trong bộ hiện tại.
Một phần ví dụ về bố cục giải pháp của chúng tôi:
\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]