2012-02-24 49 views
8

“Không thể tải tập tin hoặc lắp ráp 'Newtonsoft.Json, Version = 4.0.3.0, Văn hóa = trung tính, PublicKeyToken = 30ad4fe6b2a6aeed' hoặc một trong 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) ”.Không thể tải tập tin hoặc lắp ráp Newtonsoft.json.dll

'NewtonsoftJson.dll' là bắt buộc để đăng lên twitter. Phiên bản được sử dụng là 4.0.3.0.

Và cùng một hội đồng (nhưng phiên bản khác 4.0.0.0) được sử dụng như là hội đồng phụ thuộc của facebook C# api (dll). Tuy nhiên việc lắp ráp ở trên (4.0.3.0) không hoạt động đối với cả hai trường hợp (ví dụ như khi đăng lên twitter và đăng nhập vào facebook). Để giải quyết nó, tạo ra một dự án riêng biệt để đăng lên twitter và tham khảo assembly (4.0.3.0) riêng biệt (trong dự án cho twitter post) .Và một phiên bản khác (4.0.0.0) đã được thêm làm tài liệu tham khảo trong dự án chính cho facebook nhưng vẫn còn lỗi đến.Nếu dự án twitter bị vô hiệu hóa và chạy thì đăng nhập facebook hoạt động tốt và ngược lại.

Tôi đã thực hiện rất nhiều nghiên cứu và đã thử những điều sau đây.

xóa tạm asp.net file giải pháp sạch khởi động lại máy tính

Thậm chí đã cố gắng để gỡ bỏ cài đặt lắp ráp từ gấc (tuy nhiên nó không được đăng ký ở đó).

Hãy giúp tôi về điều này vì nó không hoạt động. Cảm ơn, S

Trả lời

8

Không rõ mối quan hệ của dự án là gì, hoặc khi lỗi này xảy ra, nhưng đây là phỏng đoán.

Bạn có 3 dự án dự án facebook (cập nhật phiên bản 4.0.0.0), dự án twitter (phiên bản 4.0.3.0) và dự án chính để refs cả hai dự án đó. Bạn có thể xây dựng giải pháp này, nhưng khi bạn chạy các ràng buộc lắp ráp sẽ thất bại. Tại sao? vì hành vi mặc định là sao chép các assembly cục bộ trước khi chạy. Điều gì xảy ra là dự án đầu tiên để xây dựng các bản sao cho bin (nói twitter) sau đó dự án thứ hai xây dựng (facebook), sau đó chính. Tuy nhiên, vào cuối phiên bản 4.0.0.0 này đang ngồi thư mục bin. Khi bạn chạy, ngay sau khi bạn gọi một cái gì đó từ twitter mà cố gắng sử dụng lắp ráp vấn đề ràng buộc không thành công vì nó còn có quyền truy cập vào phiên bản 4.0.3.0 của hội đồng.

Có một số cách để giải quyết vấn đề này. Một là đăng ký cả hai hội đồng trong GAC. Nếu đó không phải là doable sau đó nhìn vào assembly binding redirection trong tập tin cấu hình của bạn. Một cách khác là đăng ký AssemblyResolve event và tải assembly theo chương trình.

+0

hãy có một cái nhìn vào http://stackoverflow.com/questions/22490967/visual-studio-keeps-overwriting-newtonsoft-json-dll-with-an-older-version builing một dự án, thay đổi Phiên bản Newtonsoft.json.dll trong phiên bản khác! – nsb

8

Thêm dòng sau vào file app.config của bạn:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <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> 
    </assemblyBinding> 
    </runtime> 

trong <configuration></configuration> thẻ của bạn

0

Cài đặt gói Newtonsoft trong tất cả các dự án.

Install-Package Newtonsoft.Json -Version 8.0.3 
Các vấn đề liên quan