Gần đây, chúng tôi đã chuyển gần như tất cả các mã nguồn trong công ty của tôi sang một giải pháp duy nhất.
Tại sao?
Ban đầu, chúng tôi đã có hàng tá giải pháp. Một số dự án từ một giải pháp sử dụng lại các dự án từ một dự án khác và không ai quan tâm đến việc sử dụng trình quản lý gói. Ngày bạn thay đổi đáng kể một dự án được sử dụng gần như ở mọi nơi, mong đợi hàng giờ và hàng giờ mất việc cho toàn bộ công ty cho những ngày hoặc tuần tiếp theo. Điều tồi tệ nhất là bạn thậm chí không thể biết chính xác điều gì sẽ bị ảnh hưởng bởi sự thay đổi.
Hợp nhất tất cả các mã vào một giải pháp là một giải pháp thay thế. Nó hoạt động tốt trong thời điểm này, và các phụ thuộc bây giờ dễ theo dõi. Bạn muốn sửa đổi một phương thức nhưng cũng theo dõi hậu quả mà thay đổi này có thể có ở bất kỳ đâu trong cơ sở mã? Visual Studio có thể làm điều đó một cách dễ dàng. Đối với tôi, đó là một thành công.
Tích hợp liên tục bây giờ cũng dễ dàng hơn. Một giải pháp để biên dịch và triển khai. Gần như không có gì để cấu hình.
Có khả năng mở rộng?
Hiệu suất-khôn ngoan, tôi đã rất ngạc nhiên bởi Visual Studio . Tôi nghĩ rằng nó sẽ bắt đầu khóc với một giải pháp với, nói, 50 dự án. Ngày nay, có hơn 200 dự án; Visual Studio dường như có thể mở rộng đủ để quản lý chúng như thể chỉ có 20 người trong số họ. Vâng, có những thứ cần có thời gian. Nếu bạn biên dịch lại mọi dự án, với các hợp đồng Mã, phân tích mã được bật theo mặc định, v.v., hãy chờ đợi nó sẽ mất một thời gian. Nhưng không ai có thể mong đợi biên dịch 200 dự án nhanh như 10, và nhân tiện, bạn không nên: đây là vai trò của máy chủ tích hợp liên tục. Thời gian khởi động (khởi động nguội, sau đó tải giải pháp) nhanh chóng ấn tượng ; có thể không nhanh như với 10 dự án, nhưng vẫn rất chấp nhận được (dưới 20 giây trên một máy đã mua hơn năm năm trước).
Để đi xa hơn, các dự án dỡ tải có hệ thống là một ý tưởng tốt (và thực sự dễ dàng khi các dự án được tổ chức trong các thư mục trong giải pháp). Nếu ai đó làm việc trên một cái gì đó chỉ cần ba dự án được tải, thì không cần phải tải tất cả 200 dự án (tất nhiên trừ khi, phụ thuộc có thể bị ảnh hưởng).
Kiểm soát phiên bản cũng hoạt động như mong đợi (Tôi đang sử dụng máy chủ SVN, nếu có vấn đề). Tôi đã không làm việc trong một môi trường đồng thời thực sự, với, hàng chục nhà phát triển thường xuyên cam kết mã, nhưng tôi sẽ tưởng tượng rằng điều này sẽ không có quá nhiều vấn đề. Chỉ cần cẩn thận với các trường hợp nhiều nhà phát triển thêm dự án mới cùng một lúc: hợp nhất tệp .sln không phải là điều dễ nhất để làm.
Phần kết luận
Nếu tôi phải chọn lại quyết định:
Tôi vẫn sẽ di chuyển mọi thứ vào một giải pháp duy nhất. Điều này làm giảm đáng kể nỗi đau của sự phụ thuộc bị phá vỡ, và lợi ích này là hoàn toàn xứng đáng. Có một nơi tập trung cho tất cả các mã cũng là một ý tưởng tốt; điều này làm cho nó có thể, ví dụ, để tìm kiếm thứ gì đó trong Visual Studio. Tôi cũng có thể làm việc trên hai dự án liên quan đến yếu và vẫn chỉ có một cửa sổ Visual Studio được mở.
Tôi cũng sẽ nghiên cứu thêm một chút về NuGet và khả năng lưu trữ một máy chủ NuGet riêng. Quản lý các phụ thuộc thông qua NuGet có thể giải quyết một số vấn đề khi bạn không muốn hợp nhất một vài dự án vào giải pháp chung. Cá nhân tôi không gặp phải trường hợp như vậy, nhưng tôi tưởng tượng rằng các công ty khác có thể có.
Cuối cùng, đầu tư vào một ổ SSD cho mọi nhà phát triển có thể tạo ra sự khác biệt rất lớn. Nhưng bạn không cần, và trong trường hợp của tôi, cơ sở mã vẫn được lưu trữ trên một ổ cứng thông thường.