2008-08-07 39 views
15

Tôi đang phát triển ứng dụng Sharepoint và sử dụng thư viện .NET AjaxControlToolkit, chúng tôi đang thêm một trang aspx tùy chỉnh vào Sharepoint. Sharepoint 2007 chạy trong chế độ quirks vì vậy tôi đã thực hiện một số sửa đổi cho thư viện AJAX để làm cho nó hoạt động như bình thường. Vấn đề là, nhóm khác đã sử dụng thư viện AJAX và nó là một phiên bản khác với tôi. Điều này gây ra xung đột vì có thể chỉ có một dll trong thư mục bin có cùng tên.Cách tham chiếu đến nhiều phiên bản assembly

Từ những gì tôi biết, .NET sẽ có thể xử lý tình huống này một cách dễ dàng. Tôi đã thử sử dụng tên mạnh và GAC để giải quyết nó, nhưng nó vẫn đề cập đến dll trong thư mục bin. Nếu không có AjaxControlToolkit.dll trong thư mục bin, ứng dụng sẽ không tải được assembly.

Nếu tôi sử dụng thông tin lắp ráp đầy đủ về tôi như thế này

<%@ 
    Register 
    tagprefix="AjaxControlToolkit" 
    namespace="AjaxControlToolkit" 
    assembly="AjaxControlToolkit, Version=1.0.299.18064, 
    PublicKeyToken=12345678abcdefgh, 
    Culture=neutral" 
%> 

Nó mang lại cho tôi Lỗi trình biên dịch CS0433

Ai đó có thể giúp tôi về cách sử dụng nhiều phiên bản của assembly trong một ứng dụng?

+0

Bạn có sử dụng phiên bản hội đồng khác nhau trong cùng một điều khiển không? Hoặc là nó cùng một dự án nhưng điều khiển khác nhau? – Machinegon

Trả lời

3

Vâng liên kết cho Compiler Error CS0433 làm cho nó khá rõ ràng rằng vấn đề cốt lõi không phải là với nhiều phiên bản của hội đồng được tham chiếu - nhưng với không gian tên + xung đột tên tệp.

Khi bạn tải lên/tham chiếu một loại - trình biên dịch không thể giải quyết DLL nào tải loại đó từ đó. Nếu Sharepoint sẽ tải cả hai phiên bản DLL của bạn (như bạn nói nó cần) - lỗi này sẽ luôn luôn đến.

Sửa lỗi đơn giản nhất là thay đổi không gian tên trong DLL mới, vì nó có các chỉnh sửa tùy chỉnh của bạn và bạn cũng kiểm soát mã - đánh dấu rõ ràng.

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