2011-09-01 38 views
9

Giống như hầu hết các cửa hàng chúng tôi có một nhóm người làm việc trên các dự án khác nhau mà tất cả đều cần truy cập vào cùng một thông tin cốt lõi và chức năng liên quan đến doanh nghiệp của chúng tôi, thường là trong C#. Chúng tôi hiện đang chỉ sao chép các lớp phổ biến từ dự án đến dự án, nhưng mọi người bắt đầu có hương vị riêng của họ và chúng tôi muốn củng cố.Cách tốt nhất để tạo các thư viện chia sẻ có sẵn cho nhiều ứng dụng là gì?

Chúng tôi sử dụng Tortoise SVN và đã quyết định duy trì một dự án riêng biệt để chứa các lớp chung của chúng tôi, nhưng không chắc chắn cách tốt nhất để triển khai mã chung này cho các ứng dụng khác nhau của chúng tôi. Chúng tôi làm việc cho một cửa hàng CNTT nội bộ có thể quyết định mọi thứ về cách người dùng truy cập vào các ứng dụng, chúng tôi không phải lo lắng về việc phát hành sản phẩm của mình vào thế giới thực.

Một số suy nghĩ của chúng tôi đã:

  1. Biên soạn các lớp học thành một DLL đơn và nạp nó vào Global Assembly Cache (GAC)
  2. Biên soạn các lớp học thành một DLL đơn và lưu nó vào một ổ đĩa chia sẻ tập trung được tham chiếu bởi tất cả các dự án khác
  3. Biên dịch các lớp thành một DLL duy nhất và bao gồm nó trong mỗi dự án
  4. Chỉ tìm nạp các lớp mới nhất khi bắt đầu dự án, nhưng không có thư viện chia sẻ trung tâm (giải thích của chúng tôi về điều này: http://www.yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html)
  5. SVN Externals http://svnbook.red-bean.com/en/1.0/ch07s03.html

Tôi biết đây là một vấn đề phổ biến, và nếu bạn dành nhiều thời gian bất kỳ nhìn vào những hoặc khác tùy chọn, bạn luôn tìm thấy những người giải thích những cạm bẫy của từng phương pháp (phiên bản, kiểm tra hồi quy , "DLL Hell", "GAC sucks", v.v ...). Tôi khó có thể tìm thấy bất cứ ai nói về những gì WORKS và tại sao. Có phương pháp ưu tiên nào không?

+0

Bằng cách 'sao chép các lớp phổ biến', điều đó có nghĩa là bạn đang tạo tệp .cs mới trong dự án và sao chép dữ liệu từ lớp bạn muốn vào tệp .cs mới? – docmanhattan

+0

@docmanhattan i có nghĩa là sao chép các tệp .cs và thêm chúng vào các dự án mới – kscott

Trả lời

2

Tại công ty của tôi, chúng tôi có cùng một vấn đề. Hiện tại, chúng tôi chỉ sử dụng các tệp .bat đi tới SVN Trunk của chúng tôi và kéo các tham chiếu .dll gần đây nhất và điền vào một thư mục Tham khảo cục bộ cho dự án bạn đang làm việc.

Tuy nhiên, chúng tôi hiện đang làm việc để chuyển hệ thống này sang NuGet. Tôi không chắc chắn 100% nó hoạt động như thế nào, nhưng nó chắc chắn đáng xem xét. Có vẻ như bạn có thể thiết lập nó đến nơi bạn có thể trỏ nó đến kho lưu trữ mã chia sẻ, và sau đó trong Visual Studio bằng cách sử dụng plugin, nó đơn giản như nhấp chuột phải và nhấn 'Cập nhật' mọi lúc bạn cần lấy mã mới nhất.

+0

Nuget có thể được thiết lập riêng tư, vì vậy tôi cũng sẽ đề xuất điều này. Nó sẽ làm cho việc cập nhật thư viện trở nên dễ dàng – KallDrexx

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