2009-04-18 30 views
7

Điều gì sẽ là vị trí lý tưởng (thư mục) để kiểm tra trong Dll của bên thứ ba tham chiếu cho một dự án .NET trong một hệ thống điều khiển phiên bản. Thông thường tôi đã thấy hầu hết mọi người để đặt chúng dưới thùng, do đó thời gian chạy có thể tự động đón những tập tin này. Tuy nhiên đó là cách đi đúng đắn. Trước tiên, tôi muốn có một thư mục riêng biệt song song với bin được gọi là lib sẽ chứa tất cả các Dll của bên thứ ba, nhưng điều này cần thay đổi đối với tệp cấu hình ứng dụng để thư mục lib được chọn theo thời gian chạy. Ý tưởng của tôi ở đây là lib sẽ chứa dll của bên thứ ba trong khi bin sẽ chứa các dự án nhị phân (có thể là Dll hoặc Exe)Vị trí của Dll của bên thứ ba trong phiên bản Control for .NET Project

Cách ưa thích là gì? Tập trung hơn là vị trí trong Kiểm soát phiên bản chứ không chỉ Hệ thống tệp vật lý.

+0

Tại sao đây là mối quan tâm? "Ban đầu tôi muốn có một thư mục riêng biệt song song với bin được gọi là lib sẽ chứa tất cả của bên thứ ba, nhưng điều này cần thay đổi đối với tệp cấu hình ứng dụng để thư mục lib được chọn theo thời gian chạy" –

+0

well có vẻ như không phải ai cũng biết rằng bạn có thể làm một ràng buộc thời gian chạy đến các thư mục, và vì mục tiêu cuối cùng của tôi là làm cho nhóm sử dụng nó, nó cảm thấy phức tạp cho họ. –

Trả lời

12

Chúng tôi sử dụng cấu trúc sau đây thư mục (chi tiết có sẵn on my blog):

Solution\ 
    Libraries\ 
    third-party DLLs here 
    Source\ 
    Project1\ 
    Project2\ 

Mỗi tài liệu tham khảo dự án (sử dụng "Browse" tab trong hộp thoại Reference Add) các hội đồng trong "Thư viện" thư mục. Chúng được tự động sao chép vào thư mục "bin" của mỗi dự án tại thời gian biên dịch. (Thư mục "Thư viện" là, tất nhiên, cam kết kiểm soát phiên bản.)

+0

Một lý do tôi muốn có một thư mục lib riêng biệt, là tôi không thích cách VS bản sao trên dll của bin dir, vì vậy tôi muốn đường dẫn tham chiếu và đường dẫn thời gian chạy thr của dll được con đường tương đối. FYI, đây là cách chúng tôi đã có bây giờ ở cấp độ giải pháp. –

+0

gì nếu có DLL từ các dự án khác trong công ty hoặc mã nguồn mở mà bạn tạo ra DLL bên thứ 3 từ mã? Dự án đó xuất bản DLL của nó. Vậy dự án đó có cam kết DLL riêng của mình mỗi khi mã của nó thay đổi không? –

+1

@Munish Goyal: Nó phụ thuộc.Nếu mã thay đổi thường xuyên và dễ dàng cho tất cả các nhà phát triển trong nhóm xây dựng, chúng tôi thường cam kết nguồn của mình để kiểm soát phiên bản và xây dựng nó như là một phần của giải pháp. Nếu mã thay đổi không thường xuyên, khó hoặc mất nhiều thời gian để xây dựng (ví dụ, là C++ nhưng tất cả các dự án khác là C#) thì chúng tôi chỉ định một nhà phát triển làm người duy trì dự án bên thứ ba đó và cam kết cập nhật DLL bất cứ khi nào có thay đổi đáng kể; tất cả các nhà phát triển khác chỉ tham khảo các tệp DLL dựng sẵn. Luồng công việc thực sự phụ thuộc vào những gì làm cho dự án đó dễ tiêu thụ. –

9

Có thư mục riêng biệt chứa các cụm của bên thứ ba (điều này sẽ giúp mọi thứ dễ dàng hơn trong việc duy trì kiểm soát nguồn) và sau đó tạo tham chiếu trong dự án của bạn cho các hội đồng đó. Sau đó, vào xây dựng, lắp ráp của bên thứ ba của bạn sẽ được sao chép vào \bin của bạn và bạn sẽ không phải thực hiện bất kỳ thay đổi cấu hình.

+0

Vâng, đây là phương pháp tôi hầu như luôn thấy. Một thư mục "Thư viện" dưới thư mục gốc mà từ đó bạn tham khảo tất cả các DLL trong dự án của bạn là con đường để đi. – Noldorin

2

Tôi giả định rằng các bên thứ ba DLLs sẽ được sử dụng trong nhiều hơn một dự án của bạn. Vì vậy, việc đưa DLL trực tiếp vào thùng của mỗi dự án có nghĩa là bạn đã có nhiều bản sao DLL (trong VCS) vì có các dự án, không phải là thanh lịch. Như Andrew H. đã đề cập, nếu các tệp DLL thực sự phổ biến, chúng phải được đặt trong một thư mục chung sẽ được tất cả các dự án khác cần đến. Trở ngại duy nhất ở đây là khả năng phân biệt các phiên bản khác nhau của DLL giống nhau: theo thời gian, bạn có thể kết thúc với một cái gì đó như:

/common/ThirdPartyLibrary.dll (version 1.2)  
/common/ThirdPartyLibrary.dll (version 1.3) 

Cách tốt nhất mà tôi biết (bây giờ) xung quanh đó được đổi tên lần thứ 3 bên DLL với một số phiên bản rõ ràng và đề cập đến tên mới trong dự án của bạn, chẳng hạn như dự án của bạn sẽ luôn luôn, chắc chắn, hãy tham khảo phiên bản đúng. Giống như:

/common/ThirdPartyLibrary_v1.2.dll  
/common/ThirdPartyLibrary_v1.3.dll 
Các vấn đề liên quan