2013-06-03 48 views
15

Tôi đã triển khai ứng dụng ASP.NET MVC 4 và trang chủ tải tốt, nhưng khi tôi cố gắng truy cập bất kỳ trang nào khác (tất cả đều cố gắng kết nối với cơ sở dữ liệu SQL) lỗi này:Không thể tải tệp hoặc lắp ráp EntityFramework

Could not load file or assembly 'EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

tôi đã kiểm tra các tập tin Web.config và nó có các mục có liên quan sau đây:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
... 
<compilation targetFramework="4.0" /> 

tôi đã đọc tất cả những gì tôi có thể tìm qua Google nhưng không như giúp cho đến nay . Tôi biết rằng bằng cách nào đó phiên bản của EF tôi xây dựng ứng dụng với khác với phiên bản trên máy triển khai nhưng tôi có thể sử dụng một số hướng trong cách sửa sự khác biệt này.

+0

Bạn không thể đẩy thư viện EF vào máy chủ? Bạn có EF trong GAC trên máy chủ? – Justin

+1

Bạn có tệp EntityFramework dll trong thư mục bin của mình không? – Shyju

+3

Bạn dường như đang sử dụng EF5 trên .NET Framework 4 (do đó phiên bản 4.4.0.0 trong tệp cấu hình của bạn) nhưng ngoại trừ bạn nhận được là nói về EF 4.1 (phiên bản là 4.1.0.0). Nó có vẻ như một số hội đồng bạn đang sử dụng vẫn cố gắng sử dụng 4,1 trong khi EF5 khác (4.4.0.0). Hãy chắc chắn rằng bạn tham khảo cùng một hội đồng ở khắp mọi nơi. Ngoài ra các mục trong tập tin cấu hình chỉ là điểm.NET Framework cho một loại mà biết làm thế nào để đọc phần cấu hình để nó không đủ để cập nhật này để làm cho các ứng dụng làm việc chống lại EF5 – Pawel

Trả lời

14

Bạn dường như đang sử dụng EF5 trên .NET Framework 4 (do đó phiên bản 4.4.0.0 trong tệp cấu hình của bạn) nhưng ngoại trừ bạn nhận được là nói về EF 4.1 (phiên bản 4.1.0.0). Nó có vẻ như một số hội đồng bạn đang sử dụng vẫn cố gắng sử dụng 4,1 trong khi EF5 khác (4.4.0.0). Hãy chắc chắn rằng bạn tham khảo cùng một hội đồng ở khắp mọi nơi. Vì vậy, bạn cần cập nhật tất cả các tham chiếu để sử dụng EF5 và xây dựng lại dự án. Btw. mục nhập trong tệp cấu hình chỉ là trỏ .NET Framework đến Loại biết cách đọc phần cấu hình để nó không đủ để cập nhật điều này để làm cho ứng dụng hoạt động chống lại EF5

2

bạn có thể thử như sau:

trong solution explorer đi đến nút tham khảo và xác định vị trí EntityFramework nút tham khảo và sau đó trong thuộc tính của nó thiết lập để False tài sản Specific Version

sau đó loại bỏ các nhận dạng phiên bản từ bạn web.config, thay thế:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 

với chỉ đơn giản là:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" /> 

theo cách này, lỗi liên quan đến các phiên bản không khớp sẽ được giải quyết.

vẫn giống như những gì được nêu trong các nhận xét, nó là tốt nếu bạn nhận được tất cả các tài liệu tham khảo của bạn từ NuGet và kiểm tra tất cả mọi thứ trong hệ thống kiểm soát nguồn của bạn.

phương pháp này đã làm việc cho tôi nhiều lần cho nhiều lần lắp ráp và không yêu cầu bất kỳ thay đổi nào trong web.config khi bạn nâng cấp lên phiên bản mới hơn của EF sau này.

+1

Phiên bản cụ thể đã được đặt thành sai và không may, việc thay đổi dòng được đề xuất trong Web.config không thay đổi bất cứ điều gì. – Splendor

0

Tôi gặp phải điều này trong khi cố gắng gỡ lỗi một dự án cục bộ trên IIS Express.

Tôi đã tự tải trang web bằng cách mở tùy chọn IIS Express và chọn Stop Site. Sau đó, tôi đã có thể tiến hành bình thường.

1

Trước khi trải qua niềm vui khi cập nhật tất cả các tham chiếu, hãy thử khởi động lại Visual Studio. Điều này giải quyết vấn đề cho tôi.

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