Newtonsoft.json невідповідність версії збірки пакетів

I am trying to use SocketIO4Net to create socket.io client in .net. Itseems SocketIO4Net has a dependency of Newtonsoft.Json >= 4.0.8. I also am using PushSharp library which has a Newtonsoft.Json dependency of >= 4.5.10. I got NewtonSoft.Json 4.5.11 when i first installed PushSharp and I thought this version should support SocketIO4Net as well since its a higher version but i get this error whenever am trying to connect to socket.io server.

Не вдалося завантажити файл або збірку 'Newtonsoft.Json, Version = 4.0.8.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' або одну з її залежностей. Визначене визначення маніфесту, що знаходиться в зборі, не відповідає вказівок щодо збірки. (Виняток із HRESULT: 0x80131040)

Я цілий день стукаю цією проблемою залежності, я був би дуже вдячний, якщо хтось може вказати мені в правильному напрямку.

19
FYI, ми також натрапили на це, з точно такими ж версіями Newtonsoft.Json. У нашому випадку це був PlainElastic.NET, який приніс стару версію 4.0.8. Може бути, у версії Newtonsoft.Json виникає певна непослідовність, яка зберігається в NuGet ...?
додано Автор Chris Mantle, джерело
FYI, ми також натрапили на це, з точно такими ж версіями Newtonsoft.Json. У нашому випадку це був PlainElastic.NET, який приніс стару версію 4.0.8. Може бути, у версії Newtonsoft.Json виникає певна непослідовність, яка зберігається в NuGet ...?
додано Автор Chris Mantle, джерело

17 Відповіді

Знайдено рішення, спробуйте з:


    
        
            
            
        
    

18
додано
Це виправлення для поточного пакету json.net 6.0.8 ....
додано Автор Eric Brown - Cal, джерело

Знайдено рішення, спробуйте з:


    
        
            
            
        
    

18
додано
Це виправлення для поточного пакету json.net 6.0.8 ....
додано Автор Eric Brown - Cal, джерело

Ви можете змінити конфігурацію, що зв'язує збірку, і додати перенаправлення. Див. Розділ Перенаправлення версій збірки на MSDN.

В основному ви хочете додати наступний фрагмент у файл app.config або web.config :


   
     
       
         
         <!-- 
           Assembly versions can be redirected in application, 
           publisher policy, or machine configuration files.
         -->
         
       
     
   

EDIT

Чому вам потрібно переспрямовувати монтажні версії? Незважаючи на те, що SocketIO4Net підтримує нові версії Newtonsoft.Json, він був скомпільований проти однієї версії (4.0.8 у вашому випадку). Ця версія зберігається в DLL, і вона використовується для завантаження бібліотек SocketIO4Net залежить від.

Note that NuGet dependencies are not the same as DLL/runtime dependencies - NuGet dependency on Newtonsoft.Json >= 4.0.8 only means that you will be allowed to install SocektIO4Net into a project that has a newer version of Newtonsoft.Json, it has nothing to do with runtime settings.

Як кажуть, останні версії NuGet повинні автоматично додавати збірки-обов'язкові переадресації, якщо ваш проект має файл app.config або web.config.

5
додано
@Bitsian Я не знаю, що може бути причиною "Microsoft.ServiceBus.pdb не завантажується". Напевно, ще одна помилка, яка раніше була схована помилкою збірки.
додано Автор Miroslav Bajtoš, джерело
Ви можете використовувати діапазон для oldVersion. У моєму прикладі "1.0.0.0-4.5.11.0" означає всі версії, починаючи з 1.0.0.0 до 4.5.11.0 (включаючи 4.0.8.0).
додано Автор Miroslav Bajtoš, джерело
Коли я поміщу цей код у свій App.Config робочої ролі, символи не завантажуються, і я отримую помилку "Microsoft.ServiceBus.pdb не завантажується". Я не знаю, чому це станеться, коли я зробив переадресацію наведеної вище асамблеї. Це не відбувається, коли я видаляю прямий. Будь ідея?
додано Автор Bitsian, джерело
І мені було цікаво чи не потрібно мені переспрямувати з 4.0.8 до 4.5.11? Я бачу 4.5.11 як в старій, так і в новій версії в ur коді?
додано Автор Bitsian, джерело
В порядку! А як щодо 4.0.8? мені потрібно згадати, що в старій версії? тому що те, що очікує бібліотека socketio4Net!
додано Автор Bitsian, джерело

Нещодавно я працював над старим проектом. Мені потрібно було оновити наш Newtonsoft.Json.dll, оскільки мені довелося використовувати "новий" API, який потребував нової версії, але у мене ще залишилися інші бібліотеки DLL, які вимагали стару версію.

bindingRedirect you say? Nope. It kept complaining about the manifest mismatch.

Окремі теги CodeBase ? Ні. Він продовжував скаржитися на маніфест невідповідності.

Очевидно, що проблема полягає в тому, що стара версія Newtonsoft.Json.dll (3.0.0.0) НЕ має PublicKeyToken , але нова версія (4.5.7.1) має PublicKeyToken . Тому вони не могли поділитися одним і тим самим залежним тегом Assembly-tag.

Ось що я закінчив:


    
    


    
    

1
додано
Відповідно до msdn.microsoft.com/en-us/library/7wd6ex19.aspx "Ви не можете переспрямовувати версії для збірки, які не є сильними назвами. Спільна мова runtime ігнорує версію для агрегатів, які не є сильними назвами".
додано Автор PaulBinder, джерело

Нещодавно я працював над старим проектом. Мені потрібно було оновити наш Newtonsoft.Json.dll, оскільки мені довелося використовувати "новий" API, який потребував нової версії, але у мене ще залишилися інші бібліотеки DLL, які вимагали стару версію.

bindingRedirect you say? Nope. It kept complaining about the manifest mismatch.

Окремі теги CodeBase ? Ні. Він продовжував скаржитися на маніфест невідповідності.

Очевидно, що проблема полягає в тому, що стара версія Newtonsoft.Json.dll (3.0.0.0) НЕ має PublicKeyToken , але нова версія (4.5.7.1) має PublicKeyToken . Тому вони не могли поділитися одним і тим самим залежним тегом Assembly-tag.

Ось що я закінчив:


    
    


    
    

1
додано
Відповідно до msdn.microsoft.com/en-us/library/7wd6ex19.aspx "Ви не можете переспрямовувати версії для збірки, які не є сильними назвами. Спільна мова runtime ігнорує версію для агрегатів, які не є сильними назвами".
додано Автор PaulBinder, джерело

Вставте перенаправлення в збірку у вашому додатку/web.config;

   
        
        
      

Зверніть увагу, що номери версій повинні відповідати встановленій вами версії.

1
додано
Коли я поміщу цей код у свій App.Config робочої ролі, символи не завантажуються, і я отримую помилку "Microsoft.ServiceBus.pdb не завантажується". Я не знаю, чому це станеться, коли я зробив переадресацію наведеної вище асамблеї. Це не відбувається, коли я видаляю прямий. Будь ідея?
додано Автор Bitsian, джерело
І мені було цікаво чи не потрібно мені переспрямувати з 4.0.8 до 4.5.11? Я бачу 4.5.11 як в старій, так і в новій версії в ur коді?
додано Автор Bitsian, джерело

Вставте перенаправлення в збірку у вашому додатку/web.config;

   
        
        
      

Зверніть увагу, що номери версій повинні відповідати встановленій вами версії.

1
додано
Коли я поміщу цей код у свій App.Config робочої ролі, символи не завантажуються, і я отримую помилку "Microsoft.ServiceBus.pdb не завантажується". Я не знаю, чому це станеться, коли я зробив переадресацію наведеної вище асамблеї. Це не відбувається, коли я видаляю прямий. Будь ідея?
додано Автор Bitsian, джерело
І мені було цікаво чи не потрібно мені переспрямувати з 4.0.8 до 4.5.11? Я бачу 4.5.11 як в старій, так і в новій версії в ur коді?
додано Автор Bitsian, джерело

Якщо б це те саме питання.

Просто вирішив це.

Це сталося після того, як NuGet використовувався для встановлення Ext.NET, який має залежність для Newtonsoft.JSON.
Файл Newtonsoft.JSON.dll в/bin (і, мабуть, посилання на нього в файлі web.config), без перевірки, я почав процедуру NuGet Package-Install під час налагодження (таким чином, файл, ймовірно, був замком).

У вікні помилки в режимі виконання він повідомлятиме вам про стеку стеку, яка частина маніфесту має проблеми, моя була основною версією, тому я перевірив версію пакету встановлення. і це було 1 основної версії. Знайдено оригінальний файл NuGet під: "[physical path] /../ packages/Newtonsoft.Json. [Version]/lib/[.net version] /"

Обидва Маніфест та бібліотека там так копіювали його в папку/bin, оновлювали інформацію про збірку root.config і працювали.

Зразки коду: Раніше


    
    

Після


    
    

Сподіваюся, це допоможе

1
додано

У моєму випадку я вилучив пакет з NuGet і встановив нове. Потім видаліть посилання з Літератури та додайте його знову вручну. Працює як чарівність. Надія вирішиться для вас.

1
додано

У моєму випадку я вилучив пакет з NuGet і встановив нове. Потім видаліть посилання з Літератури та додайте його знову вручну. Працює як чарівність. Надія вирішиться для вас.

1
додано

Я виправив цю проблему легко: я не скопіював файл конфігурації xml з папки збірки.

Я просто переконався, що файл конфігурації xml також був включений разом з моєю програмою, і все працювало нормально!

1
додано

Я виправив цю проблему легко: я не скопіював файл конфігурації xml з папки збірки.

Я просто переконався, що файл конфігурації xml також був включений разом з моєю програмою, і все працювало нормально!

1
додано

Just had this happen with TeamCity and I imagine others will soon experience this. This probably applies to most build servers that pull NuGet packages.

Всі відповіді, які говорять про перенаправлення, є правильними. Однак вам потрібно визначити правильний номер версії. Мій проект використовував Newtonsoft.Json 7.0 , проте вони тільки що випустили 8.0 , і TeamCity знищив 8.0 , що спричиняло проблеми лише на сервер, а не локально. Всі мої переспрямування були встановлені на 7.0 .

Переконайтеся, що розгорнутий додаток фактично отримує правильну версію від NuGet, а не тільки найновішу та найкращу. Або оновіть свою конфігурацію, щоб вказати на нову версію.

0
додано

Just had this happen with TeamCity and I imagine others will soon experience this. This probably applies to most build servers that pull NuGet packages.

Всі відповіді, які говорять про перенаправлення, є правильними. Однак вам потрібно визначити правильний номер версії. Мій проект використовував Newtonsoft.Json 7.0 , проте вони тільки що випустили 8.0 , і TeamCity знищив 8.0 , що спричиняло проблеми лише на сервер, а не локально. Всі мої переспрямування були встановлені на 7.0 .

Переконайтеся, що розгорнутий додаток фактично отримує правильну версію від NuGet, а не тільки найновішу та найкращу. Або оновіть свою конфігурацію, щоб вказати на нову версію.

0
додано

Вищевказані рішення правильні, але є ще одне питання, яке не слід забувати: вміст app.config був таким самим, як описані вище.

<?xml version="1.0" encoding="utf-8"?>

  
    
      
        
        
      
    
  

Але це гарна ідея, щоб перевірити, чи є вона актуальною. У моєму випадку Newtonsoft.JSON (v.6.0.4) прийшов залежати від іншого пакета.

enter image description here

Є два варіанти;

  1. Update (Newtonsoft.JSON package) last versions.
  2. Update app.config file in the version numbers.

І остання порада, якщо ви працюєте з декількома проектами, наприклад.   exe-dll і перевірте обидві версії, якщо є Newtonsoft.JSON.

0
додано

Got the above Error: in Visual Studio 2013 To Fix: In package mamnager Execute: Install-package newtonsoft.json This will add a new line in packages.config Remove the previous line which might point to previous version on packages.config. Delete the old version's directory on the packagers directory. Remove the reference of NewtonSoft.Json and readd it pointing to the latest version. Root webconfig will have the following once everything is done. Close and reopen visual studio. This should fix it. I had the same error when installing PM> install-package durandal.starterkit I used the above method to fix.

0
додано

Got the above Error: in Visual Studio 2013 To Fix: In package mamnager Execute: Install-package newtonsoft.json This will add a new line in packages.config Remove the previous line which might point to previous version on packages.config. Delete the old version's directory on the packagers directory. Remove the reference of NewtonSoft.Json and readd it pointing to the latest version. Root webconfig will have the following once everything is done. Close and reopen visual studio. This should fix it. I had the same error when installing PM> install-package durandal.starterkit I used the above method to fix.

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug