2012-03-05 23 views
7

Tôi có hai kịch bản:Tôi nên tham khảo các assembly từ một giải pháp khác như thế nào?

  1. Có một dự án khung cho công ty, và cho tất cả các dự án chúng ta sẽ sử dụng khuôn khổ này.

  2. Có một dự án Khung tùy chỉnh dành riêng cho khách hàng và chỉ một số người trong công ty sẽ cần sử dụng DLL này.

Cả hai khung được lưu trữ trong các giải pháp riêng trên TFS.

Làm cách nào để sử dụng tham chiếu cho các dự án khác? Tôi có nên đặt cả hai hội đồng trên GAC hoặc một cái gì đó? Tôi có nên sao chép cụm đầu ra theo cách thủ công không? Những gì được đề nghị, tại sao và làm thế nào tôi sử dụng nó?

+0

Trong khi điều này có thể không có giá trị với tình hình của bạn, nếu bạn đang sử dụng lật đổ, svn: externals sẽ là một giải pháp khá đơn giản để tình huống này. – Candide

Trả lời

4

khuôn khổ Tuỳ chỉnh

Sao chép lắp ráp đầu ra bằng tay cho dự án tùy chỉnh trừ khi bạn có thể đưa nó là mã nguồn trực tiếp trong dung dịch.

Shared Khung

Tôi sẽ sử dụng NuGet thay vì GAC bất cứ lúc nào kể từ khi bạn thoát khỏi bất kỳ vấn đề versioning hoặc phải tạo một gói cài đặt riêng biệt cho khung (vì bạn GAC)

Thật dễ dàng để tạo một máy chủ nuget riêng. Chỉ cần tạo một dự án MVC3 mới và cài đặt gói máy chủ nuget: http://docs.nuget.org/docs/creating-packages/hosting-your-own-nuget-feeds

5

Thêm hội đồng được tham chiếu vào thư mục thư viện trong các dự án khác và cập nhật thủ công. Cân nhắc sử dụng nguồn cấp dữ liệu NuGet của riêng bạn nếu được cập nhật thường xuyên.

1

Bạn nên chia sẻ hội đồng bằng cách cài đặt chúng vào bộ nhớ cache lắp ráp chung chỉ khi bạn cần. Như một hướng dẫn chung, hãy giữ các phụ thuộc lắp ráp riêng và định vị các assembly trong thư mục ứng dụng trừ khi việc chia sẻ một assembly được yêu cầu một cách rõ ràng. Ngoài ra, không cần thiết phải cài đặt các assembly vào bộ nhớ cache lắp ráp toàn cầu để làm cho chúng có thể truy cập được tới interop hoặc mã không được quản lý

Tôi sẽ đưa DDL đầu tiên vào GAC vì các điều trên.

Tôi sẽ đưa khung thứ hai vào một thư mục được thiết kế dưới TFS của bạn gọi bằng dụ "Thư viện", nơi bạn sẽ thêm một tài liệu tham khảo từ (Tất cả các nhóm của bạn phải có cấu trúc thư mục giống nhau để tránh tài liệu tham khảo còn thiếu)

1

Vì vậy, # 2 dự án khung tùy chỉnh là điều tương tự như # 1, nhưng tùy chỉnh cho một khách hàng cụ thể?

Làm cho mã nguồn khung tùy chỉnh trở thành chi nhánh của mã nguồn khung bình thường, thay vì giữ nó như một giải pháp riêng biệt thực tế? Tôi cho rằng nó sẽ phụ thuộc vào sự khác biệt rộng lớn.

Như tôi thấy, ưu điểm của việc tạo một nhánh là bạn có thể dễ dàng hợp nhất các thay đổi giữa hai nhánh. Hãy tưởng tượng rằng một sửa lỗi hoặc một tính năng mới được thực hiện trong # 1 và cũng cần phải được áp dụng cho # 2; TFS sẽ có thể thực hiện điều này dễ dàng hơn, miễn là TFS biết rằng # 2 chỉ là một nhánh của # 1.

Dù sao, để đến điểm câu hỏi của bạn, ý tưởng của tôi là các dự án khác của bạn nên tham khảo các cụm đầu ra từ các dự án này.

Tôi sẽ sao chép các hội đồng Khung thành một thư mục trong thư mục giải pháp của các dự án khác của bạn. Tôi thường gọi tôi là "Phụ thuộc", nhưng nó thực sự không quan trọng. Có dự án của bạn thêm một tham chiếu đến những tập tin lắp ráp. Tôi giả định rằng các hội đồng khung tùy chỉnh của bạn sẽ có cùng tên với các khung công tác khung bình thường, vì vậy bạn có thể dễ dàng hoán đổi các tệp đó khi cần (hoặc tạo các nhánh riêng biệt của các dự án của bạn sử dụng khung tùy chỉnh).

Tôi sẽ không khuyến khích đưa các hội đồng vào GAC, vì dễ dàng tự đi lại trong quá trình phát triển nếu bạn quên gỡ cài đặt phiên bản cũ của hội đồng từ GAC.

3

Nghe tôi tham khảo dự án cổ điển và thực hiện quyết định tham chiếu nhị phân. Để lại GAC trong số này.

Trong topo mà giống như yêu cầu của bạn chúng tôi sử dụng một cái gì đó như thế này:

 
|___$/3rdParty/ 
|  |__BaseFramework.dll 
|  |__CustomFramework.dll 
|  |__log4net.dll 
|  |__WPFToolkit.dll 
| 
|___$/Sources/ProjectName/NormalProject.sln 
|       | 
|       |__[Binary Reference] "../../3rdParty/BaseFramework.dll" 
|       |__[Project Reference] 
|       |__[Project Reference] 
| 
|___$/Sources/Common/BaseFramework.sln 
|     | 
|     |__[Project Reference] 
|     |__[Project Reference] 
|     |__[Project Reference] 
|     |__[Project Reference] 
| 
|___$/Sources/Custom/Acme/AcmeProject.sln 
|       | 
|       |__[Binary Reference] "../../../3rd-party/CustomFramework.dll" 
|       |__[Project Reference] 
|       |__[Project Reference] 
| 
|___$/Sources/Custom/CustomFramework.sln 
        | 
        |__[Project Reference] 
        |__[Project Reference] 
        |__[Project Reference] 
        |__[Project Reference] 

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