2010-01-08 35 views
8

Có một số cuộc tranh luận ở đây là tốt hơn để tham khảo cơ sở mã chung của chúng tôi từ các dự án khác: theo dự án hoặc lắp ráp. Tôi ủng hộ việc tham chiếu dự án, đặc biệt là vì chúng tôi có các bài kiểm tra đơn vị tự động chứng minh rằng mã phổ biến thực hiện những gì cần thiết.VS.NET: Dự án Refs so với Assembly Refs

Ý nghĩ từ trại khác là khóa các dự án đó và chỉ phát hành các hội đồng mỗi tháng một lần hoặc một thứ gì đó. Sau đó, buộc tất cả các dự án tham chiếu đến các hội đồng. Họ nghĩ rằng điều này sẽ bảo vệ họ khỏi việc triển khai mã chưa được kiểm tra. Chúng quá "bận" để viết các bài kiểm tra đơn vị tự động và cấu hình các dự án của chúng để tích hợp liên tục và tôi không có ảnh hưởng đến điều đó, vì vậy xin đừng tập trung vào khía cạnh này.

Đây là lý do tôi có thể nghĩ tại sao tham chiếu dự án là giải pháp tốt hơn. Tôi cũng đang tìm ý kiến ​​khác.

PROS:

  • dự án Tham khảo đảm bảo bạn đang làm việc với mã mới nhất. Bạn không phải chờ đợi gì cả.
  • Giảm sao chép. Nếu không có mã mới nhất, sẽ có cơ hội lớn hơn để phát minh lại bánh xe.
  • Nếu nhà phát triển cần thứ gì đó và không thể thêm nó vào assembly nơi nó thuộc về, nó sẽ được tạo ở bất kỳ vị trí nào sẽ hoạt động, tạo ra nhiều mâu thuẫn và sao chép mã.
  • Phát triển dễ dàng hơn vì bạn có thể dễ dàng xem/gỡ lỗi những gì đang xảy ra trong mã được tham chiếu.
  • Công cụ phổ biến của chúng tôi không thay đổi thường xuyên, nhưng khi có, nó thường là một cái gì đó hữu ích. Tại sao thêm gánh nặng của bảo trì và quản lý phát hành lắp ráp.

Nhược điểm:

  • có thể có thể mất nhiều thời gian để tải.
  • Có thể mất nhiều thời gian hơn để thêm dự án vào giải pháp mới, sau đó thêm tham chiếu lắp ráp.
+1

Vì vậy, hãy đặt câu hỏi? –

+0

"Tôi cũng đang tìm ý kiến ​​khác." –

+0

'Con' lớn đối với chúng tôi là có dự án trong nhiều giải pháp: tham chiếu là trên dự án, không phải trên mỗi giải pháp, vì vậy bạn có thể kết thúc trong một mess thực sự –

Trả lời

4

Dưới đây là một vài ưu bạn bỏ lỡ

  • Cập nhật trực tiếp: Các tính năng như IntelliSense sẽ cập nhật tự động giữa dự án để tham khảo dự án như bạn đang thay đổi API
  • GoTo Định nghĩa: Nếu bạn có một tham chiếu lắp ráp, GoTo Definition sẽ đưa bạn đến định nghĩa mã thực tế. Với tham chiếu assembly, nó sẽ đưa bạn đến chữ ký metadata được tạo ra.
  • Tìm tất cả các tham chiếu: Sẽ xử lý tất cả mã trong tài liệu tham khảo dự án để sử dụng tham chiếu. Đối với một tài liệu tham khảo lắp ráp bạn sẽ chỉ thấy sử dụng trong siêu dữ liệu
  • Tìm kiếm nhanh (năm 2010 chỉ): Tương tự như tìm thấy tất cả các tài liệu tham khảo, chỉ hoạt động tốt hơn trong một tài liệu tham khảo P2P

Để đối phó với khuyết điểm của bạn

  • Có: Tải dự án thường chậm hơn tải một tham chiếu.Với số lượng dự án hợp lý mặc dù chênh lệch thời gian này không đáng kể và không ảnh hưởng đến thói quen phát triển hàng ngày của bạn
  • Có: Thêm dự án vào giải pháp thường chậm hơn so với thêm tham chiếu. Sự khác biệt mặc dù là trong vài giây và là một chi phí một lần. Tôi nghĩ rằng đó là một sai lầm để xem xét điều này như là một phần của tiêu chí.
+0

Tôi đồng ý rằng nhược điểm là hầu như không chống lại, nhưng đây là những điểm nêu ra bởi trại khác mà tôi chú ý vì sự công bằng. –

+4

Tôi có thể sai, nhưng có vẻ như với tôi rằng việc thêm dự án không phải là chi phí một lần. Mỗi dự án bổ sung làm tăng thời gian tổng hợp của giải pháp nói chung. –

2

Vâng, nếu bạn đang sử dụng bất kỳ loại điều khiển nguồn nào, bạn có thể đáp ứng cả hai trại. Sử dụng Phân nhánh hoặc Ghi nhãn (tùy thuộc vào điều khiển nguồn của bạn).

Về cơ bản nếu bạn có một nhóm kiểm soát mã chung của mình, họ có thể phân nhánh/gắn nhãn bản phát hành ổn định. Sau đó, các dự án của bạn sẽ sử dụng bản phát hành ổn định. Điều này bảo vệ bạn khỏi việc triển khai mã không ổn định cho các dự án khác của bạn trong khi cung cấp cho bạn khả năng kiểm tra, gỡ lỗi và xem tất cả các nguồn.

Bất cứ khi nào nhóm điều khiển chung của bạn tạo một bản dựng ổn định mới, bạn có thể cập nhật các tham chiếu nguồn của bạn để kéo từ nhánh mới.

Mặt khác của kịch bản này là bạn có thể có bản vá trên mã chung để không gây rối với các nỗ lực phát triển hiện tại đang diễn ra. Tất nhiên điều này làm tăng thêm gánh nặng quản lý việc cập nhật mã chung ở nhiều nơi nếu cần.

+0

Đó là một lý lẽ tôi đã làm và quên ghi chú. Cảm ơn vì đã mang mà lên. –

0

tham khảo CHIẾN LƯỢC sẽ luôn là một vấn đề thường gặp

Tôi biết đây là một câu hỏi rất cũ nhưng nó sẽ luôn luôn là một câu hỏi có liên quan với câu trả lời tương đối và tôi nhớ có câu hỏi này cùng một vài năm trước đây và tác động của hai lựa chọn (dự án so với tham chiếu) chỉ trở nên rõ ràng đối với tôi trong hai năm qua trong khi tôi đang làm việc toàn thời gian cho người xây dựng hệ thống với hơn 800 dự án trong hơn 300 giải pháp cho một ứng dụng WPF.

THAM KHẢO DỰ ÁN LÀ LÝ TƯỞNG CHO VISUAL STUDIO

tài liệu tham khảo dự án rất lý tưởng vì bạn cung cấp cho các IDE cái nhìn sâu sắc hơn vào các chi tiết của mã của bạn vì bạn đang nói một cách rõ ràng Visual Studio nơi có dự án tham chiếu và tất cả của nó mã là. Nếu bạn đang làm việc trên một hệ thống có ít hơn 200 mô-đun dự án và có thể chỉ có một vài giải pháp (nhóm dự án), hãy tham khảo dự án vì Visual Studio có thể làm nhiều hơn cho bạn với thông tin bổ sung đó trong thời gian thiết kế như hiển thị cho bạn mã thay vì phản ánh các hội đồng được tham chiếu.

THAM KHẢO HỘI có thể mở rộng TỐT HƠN

Nếu hệ thống của bạn là lớn hơn nhiều so với 200 dự án, bạn builds có thể trở nên rất chậm. Tôi đã thấy 20 phút mỗi lần xây dựng và điều đó thật sự rất tệ. Vì vậy, nếu bạn có thể tham khảo một DLL mà không thay đổi, bạn đang nói với Visual Studio "KHÔNG" để xây dựng nó, và rõ ràng là có một số tác động vào thời gian để xây dựng.

THAM KHẢO HỘI CREATE AN ảo ảnh của một tách HỆ THỐNG

tài liệu tham khảo dự án cung cấp cho bạn một IDE thông minh luôn biết ở đâu và trong bao nhiêu nơi một loại được sử dụng, nơi mà các mã có thể được tìm thấy, và một số khác thống kê hữu ích vì tất cả các dự án đều được tham chiếu trực tiếp. Nó cũng có thể cảnh báo bạn khi bạn vô tình cố tạo một tham chiếu vòng tròn.

PROS tài liệu tham khảo lắp ráp:

  1. Bằng cách xử lý một số dự án như phụ thuộc bên ngoài, bạn có thể tạo các giải pháp nhỏ hơn và nhóm nhỏ hơn các dự án liên quan, vì dự án không liên quan được coi là hội bên ngoài
  2. Cho phép trực quan Studio để xử lý các hệ thống mô-đun hóa rất lớn rất tốt.
  3. Buộc bạn làm việc ra một chiến lược dàn dựng dll/lắp ráp trong quá trình xây dựng.

nhược điểm của tài liệu tham khảo lắp ráp:

  • Thông tư liệu tham khảo trở thành có thể, và các nhà phát triển có kinh nghiệm ít bạn sẽ không nhận thấy những tài liệu tham khảo ban đầu.

    Bạn có thể vượt qua thử thách này về tham chiếu vòng tròn bằng cách xử lý một trong các hội đồng của bạn như một hội đồng của bên thứ ba đã đăng ký, mang nó đến phiên bản tiếp theo và xây dựng nó cuối cùng. Khi một bản dựng không thành công trên một dự án sử dụng cụm từ bị loại trừ này, bạn có thể quyết định xây dựng lại dự án được chỉ định đó và thường xuyên xoa bóp sự phụ thuộc vòng tròn. (KHÔNG ĐƯỢC ĐỀ XUẤT, nhưng có thể)

  • Tham chiếu khung trở lên trở nên có thể là tốt vì bạn thêm tham chiếu vào dll được biên dịch dựa trên khung .net cao hơn và Visual Studio không cung cấp cho bạn thông điệp rõ ràng gốc khi điều này xảy ra, do đó bạn sẽ thử nhiều thứ để khắc phục sự cố và thất bại nhiều lần trước khi tìm ra cách khắc phục các phiên bản khung công tác.

    Dự án mới mặc định lên phiên bản mới nhất của khung .net không xem xét thực tế là tất cả các dự án trong giải pháp hiện tại vẫn ở phiên bản cũ hơn .net, vì vậy khi bạn thêm tham chiếu vào dự án đó bằng cách sử dụng hội đồng tài liệu tham khảo, bạn thường sẽ nhận được một lỗi lạ mà không phải là dễ dàng như vậy để tìm ra.

  • Tham chiếu chéo nhánh cũng có thể xảy ra vì có thể bạn đang làm việc trong nhiều chi nhánh cùng một lúc và đôi khi bị lẫn lộn khi thêm tham chiếu.

    Bạn nhấp vào "thêm tham chiếu", đi một vài thư mục, chọn một vài thư mục, chọn dll và nhấp vào thêm mà không nhận ra rằng dll thực sự là quá xa và xuống thành một nhánh khác mà bạn cũng đang làm việc trên. Vấn đề này sẽ chỉ trở nên rõ ràng sau này khi máy chủ xây dựng cố gắng giải quyết việc lắp ráp đó và không thành công. Và lỗi "không gian tên không xác định, bạn có thiếu tham chiếu lắp ráp không?" sẽ không giúp bạn trong việc lãng phí toàn bộ thời gian của cả nhóm.

Các vấn đề liên quan