Tôi đang chơi với dự án mvc của mình.Tham khảo các phiên bản khác nhau của Json.NET dll
Tôi đã gói một gói có tên là SocialAuth.Net vào dự án, lần lượt sử dụng Newtonsoft.Json.dll 4.0.0.0 (cũ) là một trong những phụ thuộc của nó.
Sau đó, vì tôi cũng cần Json.Net, tôi muốn có phiên bản mới hơn, So I Nugeted Json.NET, phiên bản mới hơn 4.5.0.0 (mới hơn).
Sau đó, sự cố xảy ra. Theo quan điểm của tôi dao cạo "ViewBag.Title = ...." nó đã gạch dưới màu đỏ nói:
Warning 1 c:\users\admin\documents\visual studio 2010\Projects\WebApp\WebApp\Views\Home\Index.cshtml: ASP.NET runtime error: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Đây là phần Json của web.config của tôi:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
Vì vậy,
Tôi đã đi đến Tài liệu tham khảo, kiểm tra và tìm thấy Newtonsoft.Json là 4.0.0.0 (có thể đến với SocialAuth.Net), và tôi đã xóa nó, và thêm tham chiếu 4.5.0.0 tôi nhận được từ Nuget.
Tôi truy cập vào WebApp/bin/debug/folder và xóa mọi thứ, sau đó xây dựng lại dự án.
Tuy nhiên, khi tôi xây dựng lại ứng dụng web, Newton.Json 4.0.0.0 trở lại vào bin/debug/bất kể cách tôi tham chiếu thủ công đến Nuget 4.5.0.0 mới. và cùng một lỗi xảy ra. Tôi bị mắc kẹt.
Bạn có và biết cách giải quyết vấn đề dll này không? Cảm ơn bạn.
CHỈNH SỬA -----------------------------------
Sau một chút suy nghĩ, Tôi hiểu nó là bởi vì Json.Net đầu tiên (4.5 mới hơn) được liên kết đầu tiên, sau đó cái cũ hơn đến sau nó khi xây dựng. Vì vậy, cái cũ sẽ ghi đè lên cái mới hơn.
Tôi không quen với cài đặt GAC, nhưng biết rằng tôi có thể mở sâu và cài đặt 2 phiên bản ở đó, mà tôi không muốn, vì điều đó có nghĩa là tôi phải làm điều đó với mọi máy tôi triển khai trên web ứng dụng. Có cách nào để chơi với web.config và nhận được xung quanh này?
oldVersion = "0.0.0.0-4.5.0.0" phải cũVersion = "0.0.0.0-4.0.0.0" – user516883