7

tôi hiện đang nhận được ngoại lệ sau khi cố gắng sử dụng Enterprise Library Validation Application Block:"Không thể tải tập tin hoặc lắp ráp 'Microsoft.Practices.EnterpriseLibrary.Validation" ngoại lệ

xảy ra lỗi khi tạo phần cấu hình trình xử lý để xác thực: Không thể tải tệp hoặc lắp ráp 'Microsoft.Practices.EnterpriseLibrary.Validation, Phiên bản = 4.1.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35' hoặc một trong các phụ thuộc của nó. Định nghĩa tệp kê khai của assembly được đặt không khớp với tham chiếu assembly. (Ngoại lệ từ HRESULT: 0x80131040) (C: \ Documents and Settings \ My Documents \ Visual Studio 2008 \ Projects \ Testers \ TestProject \ web.config dòng 12)

Tôi biết ngoại lệ đang cố gắng nói với tôi là gì, nhưng tôi không thể tìm ra cách sửa nó. Tôi chỉ từng cài đặt một phiên bản của Thư viện Doanh nghiệp và đây là phiên bản (4.1.0.0), vì vậy tôi không thấy nó có thể tìm ra phiên bản sai như thế nào, vì vậy tôi tưởng tượng đó là vấn đề phụ thuộc. Tôi đã bao gồm các tệp DLL "Common", "Validation" và "ObjectBuilder2" từ Thư viện Enterprise 4.1 làm tài liệu tham khảo trong dự án, vì vậy tôi không chắc chắn những gì khác tôi đang thiếu. Các tài liệu chắc chắn dường như chỉ ra đây là tất cả những gì tôi cần.

Có cách nào để theo dõi vấn đề phụ thuộc không?

Nếu có ích, tôi đang cố gắng sử dụng Công cụ cấu hình thư viện doanh nghiệp để tạo quy tắc Chặn ứng dụng xác thực được đặt để xác thực dữ liệu trong thực thể Khuôn khổ thực thể. Tôi đang sử dụng ASP.NET MVC trong Visual Studio 2008.

Thanks cho bất kỳ sự trợ giúp/hướng bạn có thể cung cấp,

Chris

Trả lời

5

Bật Fusion đăng nhập và xem những gì lắp ráp đã được ràng buộc khi chạy.

Hanselman có một bài đăng gần đây sẽ hữu ích trong việc bật ghi nhật ký và kiểm tra đầu ra.

http://www.hanselman.com/blog/CommentView.aspx?guid=3654c8f3-c5c3-4dee-a01f-c9a8da3ef2fa

Một khác biệt quan trọng để thực hiện là tài liệu tham khảo được thêm vào dự án là tài liệu tham khảo thời gian biên dịch và không ảnh hưởng đến cách mã được ràng buộc trong thời gian chạy nào khác ngoài việc xác định một tên mạnh nếu một lắp ráp tên mạnh mẽ đã được sử dụng. Để tìm hiểu những gì đang xảy ra trong thời gian chạy, bạn cần phải nhìn vào các bản ghi ràng buộc. Nhật ký sẽ hiển thị cho bạn tất cả các nỗ lực mà thời gian chạy thực hiện tại vị trí lắp ráp. Nếu assembly không nằm trong thư mục bin cùng với giá trị của bạn, nó rất có thể tìm kiếm trong GAC và tìm một phiên bản mà nó không mong đợi.

Lưu ý rằng trình biên dịch KHÔNG sử dụng GAC khi tham chiếu các hội đồng. Vì vậy, hầu hết có thể bạn có một phiên bản khác được sử dụng như một tham chiếu trong dự án hơn là bạn đã cài đặt trong GAC.

Ngoài ra, rất dễ dàng để tìm ra phiên bản bạn đã cài đặt trong GAC bằng cách tìm trong C: \ Windows \ assembly bằng Windows Explorer. Phiên bản được chỉ định trong thông báo lỗi của bạn sẽ là phiên bản được tham chiếu trong quá trình biên dịch. Nếu các phiên bản này không phù hợp với điều này có thể là vấn đề của bạn, giả sử rằng Fusion thực sự đang tìm kiếm GAC (điều này sẽ hiển nhiên khi nhìn vào Nhật ký kết hợp).

+0

Cảm ơn các con trỏ. Cuối cùng tôi nhận ra rằng do cách tôi đã làm tài liệu tham khảo nó đã được kéo trong phiên bản mặc định của DLL thay vì mới hơn. Tôi ngu ngốc nghĩ rằng tôi đã phải xây dựng các DLL bản thân mình thay vì sử dụng các nhị phân được xây dựng sẵn trong gói, do đó, rõ ràng là mã thông báo không phù hợp với một trong tôi đã được thiết lập. Tôi đã sắp xếp cài đặt với Thư viện Doanh nghiệp để nó sử dụng các tệp DLL do Microsoft xây dựng và mọi thứ đều vui vẻ. Tôi sẽ xem xét sử dụng nhiệt hạch, có vẻ như nó sẽ giúp tôi trong việc theo dõi vấn đề này xuống nhanh hơn. Cảm ơn! – Chris

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