2008-11-12 38 views
28

Loại 'x' được định nghĩa trong một assembly không được tham chiếu. Bạn phải thêm tham chiếu đến assembly 'abc123'.Lỗi lạ - CS0012: Loại x được xác định trong một assembly không được tham chiếu

Tôi có ứng dụng web .NET 2.0 tham chiếu đến assembly của tôi 'abc123'. Việc lắp ráp tồn tại trong GAC và tôi đã xác minh rằng đó là phiên bản chính xác (giống nhau). Phần còn lại của ứng dụng không có vấn đề ngoại trừ một trang .aspx. Trang được đề cập có bộ lặp hiển thị điều khiển người dùng là một trong các "trường" của nó. Khi ràng buộc một danh sách các loại y để repeater tôi vượt qua người sử dụng kiểm soát một danh sách các loại x (một tài sản của y) như thể hiện ở đây:

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/> 

Trên điều khiển người dùng của bộ tài sản, tôi liên kết danh sách các loại x vào GridView trong điều khiển người dùng.

Một điều lạ cần lưu ý là báo cáo này hoạt động tốt trên máy tính phát triển của tôi nhưng không hoạt động trên bất kỳ máy chủ nào khi tôi triển khai. PC của tôi là Windows XP, IIS6, VS2005. Các máy chủ là Windows Server 2003, IIS6.

Tôi hy vọng tôi đã giải thích đủ tốt. Cảm ơn trước vì bất kỳ thông tin chi tiết nào bạn có thể cung cấp.

Trả lời

27

Tôi là đồng nghiệp của Mike và chúng tôi đã tìm ra giải pháp.

Loại X được xác định trong hội đồng của mình, đó chỉ là trong GAC. Mặc dù ASP.NET appplication web của ông đã có một tham chiếu, nó đã không tải từ GAC chỉ cho UserControl này. Phần còn lại của ứng dụng hoạt động như mong đợi. Chúng tôi xác nhận tải không thành công bằng cách đặt một bản sao của hội đồng vào thư mục bin và mọi thứ đã hoạt động. Chúng tôi đã tháo lắp ráp và sự cố đã xảy ra.

Giải pháp của chúng tôi là thêm thủ công một mục nhập vào web.config trong phần assembly để trỏ ASP.NET tới GAC.

Dường như bất kỳ lúc nào bạn tham chiếu một loại trong trang (không phải mã phía sau), bạn cần thông tin lắp ráp được xác định trong tệp web.config hoặc trong chỉ thị trang.

<assemblies> 
     <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/> 
</assemblies> 
3

Khi khắc phục sự cố các loại sự cố này, Fusion Log Viewer luôn là trợ giúp tuyệt vời.

3

Ngoài ra còn có một lỗi có thể tự biểu hiện bằng các triệu chứng tương tự, được mô tả here.

Giải pháp thay thế là xóa tất cả mọi thứ trong thư mục C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ và nó chỉ có vẻ tự biểu hiện trong chế độ gỡ lỗi.

+1

Liên kết bị hỏng. –

0

Tôi đã gặp lỗi chính xác, nhưng tôi đã có một công cụ xây dựng công khai công khai trong lớp của tôi được sử dụng làm tham số, đối tượng từ một dự án khác.

Tôi đã giải quyết được sự cố bằng cách đặt hàm tạo nội bộ đó.

0

Thường xuyên hơn không, đó là do các hội đồng được lưu trong bộ nhớ cache. Một cách giải quyết vấn đề này là bằng cách tạo "tham chiếu mạnh mẽ" trong tệp proj hoặc config. Hãy tham khảo blog này post

1

Tôi thấy rằng nếu type x thực sự là một lớp trong số App_Code của bạn, làm bẩn nó và tiết kiệm lại thường buộc ứng dụng web biên dịch lại và giải quyết vấn đề.

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