Tôi có một dự án trợ giúp mà tôi sử dụng trong tất cả các ứng dụng mà tôi tạo. Nó chứa một số phương thức mở rộng và một loạt các lớp trình trợ giúp chung, các điều khiển, v.v. Tôi thỉnh thoảng cập nhật / mở rộng dự án trình trợ giúp. Đây thường là những dự án nhỏ và không liên quan, và tôi là người duy nhất làm việc trên tất cả chúng.
Tôi đã thử hai cách tiếp cận để sử dụng nó
- thêm tệp .cs trực tiếp (Thêm dưới dạng liên kết) vào từng dự án nơi tôi sử dụng chúng
- biên dịch nó dưới dạng dll và thêm nó làm tài liệu tham khảo
Tôi thấy một số lợi ích và hạn chế của các phương pháp này.
Cái đầu tiên:
- đơn giản hơn, vì các lớp của trình trợ giúp được biên dịch vào tệp exe, do đó tôi thường có thể dễ dàng cung cấp chỉ một tệp .exe duy nhất sẽ hoạt động tốt. Vì tôi thêm dưới dạng liên kết, tôi có thể khá chắc chắn rằng bất cứ khi nào tôi xây dựng bất kỳ dự án nào sử dụng trình trợ giúp, các tệp trợ giúp sẽ là phiên bản mới nhất.
- thậm chí còn đơn giản hơn, vì tôi có thể tách các tệp để các phương thức mở rộng của tôi chạy tốt trên .NET 4.0 có thể được tham chiếu riêng với các tệp yêu cầu .NET 4.5, có nghĩa là toàn bộ ứng dụng có thể chạy trên .NET 4.0
- Cho phép gỡ lỗi thông qua mã, với tất cả các lợi ích của điểm dừng, v.v ...
- dường như không phải là 'thực hành tốt nhất'
Cái thứ hai:
- dường như là cách tiếp cận đúng, nhưng:
- yêu cầu tôi cung cấp một tập tin dll riêng biệt, vì một số lý do khó khăn hơn cho người dùng (họ có xu hướng chia sẻ các chương trình của tôi mà không có chương trình, sau đó gặp sự cố khi khởi động)
- vì nó được biên dịch thành một tệp duy nhất, nó sẽ yêu cầu phiên bản .NET cao nhất - nhiều người dùng của tôi không có .NET 4.5 và chỉ một số thành phần của lớp trình trợ giúp của tôi yêu cầu điều này, có nghĩa là tôi có thể buộc một số người cập nhật hệ thống của họ mà không có lý do
- Tôi cũng cần đảm bảo rằng bất cứ khi nào tôi cập nhật bất kỳ chương trình nào của mình, tôi cũng sẽ cung cấp tệp dll - mặc dù tôi không biết liệu nó có bị thay đổi kể từ phiên bản trước hay không (có thể là vậy, nhưng nó có thể cũng có thể là cùng một phiên bản). Tôi không thể thấy một cách đơn giản để xác định rằng, mà không theo dõi phiên bản lắp ráp, đó là công việc bổ sung. Hiện tại, khi tôi cập nhật các chương trình của mình, tôi chỉ cung cấp exe được cập nhật và tôi muốn giữ cho nó cấu hình nhỏ và thấp.
Vì vậy, lợi ích thực sự cho việc sử dụng tập tin tại đây là gì? Xin lưu ý rằng tôi là người duy nhất chỉnh sửa mã của tất cả các ứng dụng và tệp trợ giúp.
Ngoài ra, để làm rõ - các ứng dụng thường rất ít, trong khi mã chứa trong các lớp của trình trợ giúp hoàn toàn chung cho tất cả chúng (một số so sánh chuỗi đơn giản, đường dẫn hoặc hoạt động XML, v.v.)
Thật ra, có ai đó khiến tôi nhận ra rằng có một lựa chọn thứ ba. Khi tôi có mã trình trợ giúp trong một dự án separte, tôi có thể thêm dự án này vào các giải pháp của từng ứng dụng riêng biệt của mình - hoạt động giống như 'Thêm dưới dạng liên kết' cho các tệp duy nhất, ngoại trừ tôi chỉ thêm một dự án duy nhất ... Nhưng như được chú ý bởi Doc Brown, điều này về cơ bản có nghĩa là dll sẽ cần phải được thêm vào dự án ...
Tuy nhiên, một điều nữa có lợi cho việc không sử dụng các tệp dll là khả năng gỡ lỗi thông qua lớp người trợ giúp một cách chủ động ...