Не вдалося завантажити файл або збірку "Newtonsoft.Json" або одну з її залежностей. Визначення маніфесту не відповідає еталонній збірці


216

Що я спробував після пошуку:

  1. в Web.Config помістив прив’язку до старої версії:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
  2. Відредагуйте мій файл .csproj, щоб переконатися, що існує лише одна посилання Newtonsoft

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
  3. Шукайте на моєму комп’ютері кожну версію Newtonsoft.Json.dll та видаляйте будь-яку не версію 6.0.1 та видаляйте вміст моєї тимчасової папки

  4. Відновіть / встановіть пакет у консолі управління диспетчером

Він вдається побудувати, але отримує помилку під час переходу на сайт.

EDIT

Ок, тому я спробував перевстановити, як кожен пакунок нута, і, схоже, додав 4.5 версії newtonsoft.json.dll, але я отримую ту ж помилку. Цільовий робочий проект мого проекту - це .NET 4.5.1. Ось, що я зараз отримую:

Помилка серверу в програмі '/'

Не вдалося завантажити файл чи збірку Newtonsoft.Jsonабо одну з його залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040)

Опис: Неопрацьований виняток стався під час виконання поточного веб-запиту. Перегляньте слід стека, щоб отримати докладнішу інформацію про помилку та місце її виникнення в коді.

Деталі винятку System.IO.FileLoadException: Не вдалося завантажити файл чи збірку Newtonsoft.Jsonабо одну з його залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040)

Помилка джерела:

Неопрацьоване виняток було створено під час виконання поточного веб-запиту. Інформацію про походження та місцезнаходження винятку можна ідентифікувати за допомогою сліду стека винятку нижче.

Слідування завантаження сліду: Наступна інформація може бути корисною для визначення того, чому збірка Newtonsoft.Jsonне може бути завантажена.

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Слід стека:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.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)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

2
Гаразд, я думаю, я змусив його працювати зараз. Я видалив кожну Newtonsoft.Json.dll на своїй машині, яка не була останньою версією, яку я міг знайти, переконався, що я маю останню версію в NuGet, і створив її, і переконався, що вона була останньою в папці bin, і Зміни я залишив у web.config та .csproj. Зараз я
переживаю

1
Додайте відповідь на своє запитання, щоб люди могли побачити, що це вирішено? І позначте це як рішення
Per Hornshøj-Schierbeck

2
У мене є якась версія цієї проблеми навіть сьогодні (3.01.2016) з версією 8.0.2. Він намагається завантажити версію 6.0.0. У моєму рішенні посилань немає 6.0.0. Немає версії 6.0.0. .dll в будь-якій точці мого рішення. У мене на моєму комп’ютері багато копій newtonsoft.json.dll, різних версій, вони використовуються встановленим стороннім програмним забезпеченням, з яким я не хочу возитися. Окрім видалення всіх цих копій, я спробував кожне рішення, згадане у цій цілій темі, і нічого не вийшло.
Шавай

1
Я також зіткнувся з цим повідомленням про помилку newtonsoft-json, коли я додав посилання одного проекту на інший проект, але .Net Framework в проектах був іншим після того, як було виправлено те саме .Net Framework для обох проблем. Але я не зміг зрозуміти повідомлення про помилку Framework, чому воно показує помилку newtonsoft-json.
Самєр

1
Встановіть однакову версію Newtonsoft.Json у всіх своїх проектах, навіть не використовуючи їх.
rubStackOverflow

Відповіді:


274

Щоб вирішити це, я забезпечив, щоб усі мої проекти використовували одну і ту ж версію, виконавши наступну команду та перевіривши результати:

update-package Newtonsoft.Json -reinstall

І, нарешті, я видалив із веб-сайту config:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>

Якщо ви хочете переконатися, що всі ваші пакети Newtonsoft.Json однакові , ви можете вказати версію, як:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
Щойно запуск команди перевстановлення працював на мене. Мені не потрібно було змінювати web.config.
Кіт

4
Мені просто довелося додати тег <dependentAssembly>, щоб позбутися цієї помилки.
Nicklas Møller Jepsen

3
Я повинен був надати -версію, але опустити прапор -встановити, щоб він працював у моєму випадку.
anre

1
Я використовую останню версію 9.0.1, але вона показувала ту ж помилку. Потім я перевірив версію у файлі csproj, і вона була 9.0.0.0, і додала, що до моєї web.config і проблема була вирішена. 1. Переконайтесь, що версія в csproj така сама, як і в web.config 2. Остерігайтеся номерів версій, вона може говорити x.0.1, коли фактична версія x.0.0.0, x може бути 6 або 9 або будь-яка вона .
Євген

7
Зауважте, що для запуску команди у VS2017, ви можете зайти в Інструменти -> Nuget Package Manager -> Console Package Manager
Rose

83

Я використовую Newtonsoft.Json v6.0.3, але це те, що я повинен був зробити у своєму файлі Web.config:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Зауважте, що, хоча я використовую 6.0.3, мені довелося це вкласти newVersion="6.0.0.0"

У моєму файлі пакети.config у мене є:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
Як і примітка, я спробував видалити / видалити / видалити все, що я міг знайти, що стосується Newtonsoft.Json, потім застосував Nuget, щоб перевстановити його, але все ще отримував помилку вище. Тільки до того, як я вніс зміни, я згадав, що мені вдалося змусити його працювати належним чином.
CraigV

У мене виникла ця проблема, і я скористався засобом перегляду журналу прив'язування журналу, що допомагає діагностувати її. Зв’язувальна установка повідомляє v6.0.3 Newtonsoft.Json.dll як v6.0.0.0, тому перенаправлення не вдасться, коли я налаштував його як 6.0.3.
Джейсон Слокомб

Рядок "Примітка" допомагає мені. Я спочатку 9.0.1.19813 був новою версією в прив'язувальній прямій системі, оскільки саме так говорить DLL. Це те, що я зараз маю: <Посилання включати = "Newtonsoft.Json, Версія = 9.0.0.0, Культура = нейтральна, PublicKeyToken = 30ad4fe6b2a6aeed, ProcessArchitecture = MSIL"> <SpecificVersion> False </SpecificVersion> </Reference> <dependentAssembly> <AssemblyIdentity name = "Newtonsoft.Json" culture = "нейтральний" publicKeyToken = "30ad4fe6b2a6aeed" /> <obvezujRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </dependentAssembly>
Марк Зефельдт

62

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

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

Як я вирішив цю проблему, це запустити консоль менеджера пакунків у візуальній студії (2013). Звідти я запустив таку команду:

update-package Newtonsoft.Json -reinstall

слідом за ним

update-package Newtonsoft.Json

Це пройшло та оновило всі мої конфігураційні файли та відповідні файли проекту. Примушуючи їх усіх до тієї ж версії dll. Первісна версія 4.5 перед оновленням знову, щоб отримати останню версію.


Саме оновлення вирішило проблему для мене. Мій проект було оновлено до версії 7.0 Newtonsoft.
id.ot

Працювали для мене. Після цього важливо зауважити, щоб переконатися, що ваш файл package.config та web.config мають відповідні версії.
TheValyreanGroup

Працював для мене, коли закінчився з консолі менеджера пакунків NuGet дякую!
Kbdavis07

25

У мене було те саме повідомлення про помилку, і, як ви згадали, це було пов’язано з різними версіями посилання Newtonsoft.Json.dll.

Деякі проекти в моєму рішенні MVC використовували пакет NuGet для версії 4 цього dll.

Потім я додав пакет NuGet (для Salesforce в моєму випадку), який приніс Newtonsoft.Json версії 6, як залежність до одного з проектів. Саме це і викликало проблему для мене.

Для очищення речей я використав розділ "Оновлення" в Менеджері пакетів NuGet для рішення (вимкнути меню Інструменти або клацніть правою кнопкою миші), щоб оновити пакет Json.Net протягом усього рішення, щоб він був однаковою версією для всіх проектів.

Після цього я просто перевірив файли App Config, щоб переконатися, що будь-які рядки для переадресації прив'язки збираються до вибраної версії, як показано нижче.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

Що робити, якщо DLL мають залежності для різних версій Newtonsoft.Json для одного і того ж додатка MVC? Тут я застряг.
Джеремі Рей Браун

Використовуйте параметр Consolidate у менеджері пакетів NuGet, щоб версії не розходилися.
niico

17

Гаразд, я думаю, я змусив його працювати зараз. Я видалив кожну Newtonsoft.Json.dll на своїй машині, яка не була останньою версією, яку я міг знайти, переконався, що я маю останню версію в NuGet, і створив її, і переконався, що вона була останньою в папці bin, і Зміни я залишив у web.config та .csproj. Тепер я переживаю ще одну помилку, тож вона повинна працювати.


2
Як ви вирішили знайти всі місця на вашій машині?
obaylis

Я отримав помилку також при отриманні проекту сервером команди команди на мій pc.i додати посилання на newtonsoft до мого рішення. він не працював. потім я встановив json.net (newtonsoft.json) через nuget manager manager.Now it добре працює.
Мохаммед Садікур Рахман

він знаходиться всередині імені файлу папку бен - Newtonsoft.Json.dll Видалити цей файл і перевстановити пакет або просто встановити більш низьку версію і перевстановити правильну версію з допомогою NuGet-Solution
Медді

7

Коментуючи цю частину на моєму веб-сайті config вирішив мою проблему:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

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

update-package Newtonsoft.Json -reinstall

4

Я спробував кроки Олега, і вони працювали для моєї тієї ж ситуації.

Кроки:

  1. Запуск update-package Newtonsoft.Json -reinstallу Менеджері пакунків.

  2. Видаліть свою bin, включивши перегляд прихованих файлів та видаливши binпапку.

  3. Закрийте свою Visual Studio і відкрийте її знову.

  4. Тепер запустіть проект ще раз. Я вважаю, що це повинно бути нормально!


4

Вирішити проблему можна, додавши нижче рядки у файл web.config.

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

3

У моєму випадку це було лише питання:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

Проблема виникла, коли я перезавантажив папку TFS.


3

Насправді мені допомогло вимкнути збірку Resharper і використовувати параметр VisualStudio Re-Build у своєму проекті.


Як ти це зробив?
Наомі

1
У параметрах Resharper: Tools -> ReSharper Build -> Build Engine - виберіть "Visual Studio"
Shaulian

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

3

від Інструменти >> Менеджер пакунків NuGet >> Управління пакетом для оновлення рішення Newtonsoft.Json усіх рішень до останньої версії


2

якщо ви працюєте з якимось підривом: видаліть проект і повторно завантажте його, він працював для мене: S


Довгий шлях, але мені довелося це зробити, оскільки жодне інше рішення не працювало для мене
Майк Резолі

2

У мене був той самий випуск щодо тестового проекту, який стосувався проекту MVC 5. Це сталося після того, як я об'єднався з проектом MVC 5. Я виправив це, встановивши оновлення Visual studio 2012, як пояснено тут у відповіді Андре.

  • У вашій візуальній студії зайдіть
    1. Інструменти> Розширення та оновлення
    2. Виберіть "Оновлення" у списку гармошок зліва.
    3. Виберіть "Оновлення продукту".
    4. Оновлення до новітньої версії

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

Моя проблема була вирішена завдяки цьому рішенню дякую! У мене була встановлена ​​версія 8.0.1, і вона не працювала, поки я не оновився до оновлення VS2013 5
Devin Prejean

2

Я не знаю чому, але в моєму випадку, навіть якщо я видаляю папку бін з проекту, коли я будую проект, він копіює стару версію newtonsoft.json, я скопіював dll нової версії з папки пакетів і це вирішує наразі.


У мене було подібне питання. У своєму рішенні я маю тестовий проект. Тестовий проект отримував версію 9 у кошику, але проект, який я тестував, мав версію 12. Я скопіював версію 12 із папки тесту в проектну папку для бін тесту.
Джош Джей


2

Гаразд, тому я гадаю, що тут потрібно додати свою відповідь до цього довгого списку порівняно зі створенням дублюючого питання ...

Якщо ви отримуєте це в 2019 році, використовуючи .NET Core 3.0 (Попередній перегляд на даний момент), рішення полягає в тому, щоб усі проекти націлені на одну і ту ж версію .NET Core (в моєму випадку 3.0). Я думаю, у мене був один проект націлення на рішення 2.1, а решта - 2.2, так що я, мабуть, міг затриматися з 2.2 ...

Я навіть не встановив Newtonsoft.Json в жодному з проектів, і, природно, додавання його до них не вирішило проблему.

Якщо у вашому рішенні є бібліотеки класу .NET Standard або w / e, вони не повинні бути в одній версії, хоча, ймовірно, вони повинні бути останніми, які ви можете перейти. Наприклад, мої бібліотеки класів .NET Standard перебувають на 2.2, оскільки ще немає .NET Standard 3.0.


1

Жодна відповідь, включаючи перевірену, для мене не працювала.

Рішення було набагато простішим. Я вперше видалив посилання зі свого шару BUS. Потім видалили DLL з проекту (щоб переконатися, що він зник), а потім перевстановили JSON.NET з нукетних пакетів. І, хитра частина полягала в тому, щоб "вимкнути його і знову".

Я просто перезапустив візуальну студію, і там вона працювала!

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


2
Я думаю, що Простий був сарказмом.
Варто7


1

Я вирішив це, видаливши нижню версію Newtonsoft.json.dll у папці bin та додав Newtonsoft.json.dll V6.0.0.0 та видалив наступні елементи web.config

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

1

У мене виникла така ж проблема з ядром dotnet і вдалося виправити її, очистивши кеш NuGet.

Відкрийте панель повноважень та введіть наступну команду.

dotnet nuget locals all --clear

Потім я закрив Visual Studio, відкрив її знову і ввів наступну команду в консоль менеджера пакунків:

Update-Package

Тепер NuGet повинен відновити всі пакунки та знову популювати кеш-пам'ять.

Після цього я зміг створити і запустити свій dotnet core webapi в контейнер Linux.


1

рішення, яке вирішило мою проблему для цього

goto reference-> клацніть правою кнопкою миші Newtonsoft.json - goto властивості та перевірте версію

ця сама версія повинна бути в

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>

1

Після години боротьби з цим я зробив наступне:

web.config

<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

Ключ для введення правильного номера newVersion та oldVersion - це відкриття проекту, Referencesзнайдіть пакет, перейдіть до його властивостей або натиснітьalt + enter

Ви знайдете розділ, Versionякий у моєму випадку був, 12.0.0.0тоді як він був насправді 12.0.3під час вивчення Manage NuGet.

Тому вам потрібно вибрати версію пакета з референтних властивостей (у моєму випадку 12.0.0.0)

Нарешті, cleanі rebuildпроект (можливо, ви хочете видалити папки binта objраніше).

Ви можете зіткнутися з проблемами залежностей інших пакетів, я зробив це для всіх, і вони спрацювали.


0

Легкі кроки. (1) Запустіть "update-package Newtonsoft.Json -reinstall" у менеджері пакетів.

(2) Видаліть бін, включивши перегляд прихованих файлів та видаливши папку.

(3) Закрийте свою візуальну студію та відкрийте її знову.

(4) Тепер запустіть проект ще раз. Я вважаю, що це повинно бути нормально


0

Я потрапив у цю проблему, оскільки мав: проект A (настільний .exe) стосується проекту B (портативний .dll). A & B мали різні версії JSON.Net, і тому виник конфлікт із завантажувачем. Коли я зробив всі версії JSON.net однаковими, це спрацювало. (Це насправді те, що роблять деякі рішення вище - я просто закликаю, чому це працює)


0

Я боровся з цим нещодавно зі старшим проектом.

Мені вдалося виявити проблему, перевіривши, яка версія dll була насправді в папці bin.

У мене був сценарій після складання, який копіював залежні збірки з папки бібліотеки dll в папку bin. Загальна установка за дні до нугету.

Тому щоразу, коли я будував сценарій після збирання, замінював правильну версію Json.net на старішу


0

У мене був такий самий випуск, і бібліотека Visual Studio 13 для мене за замовчуванням становила 4,5, тому у мене є 2 рішення, одне з яких - це посилання на це у файлі webconfig. Це в крайньому випадку, і це працює.

У повідомленні про помилку зазначено, що в цьому місці /Projects/foo/bar/bin/Newtonsoft.Json.DLL є проблема. де DLL! Основна перевірка властивості сказала мені, що це 4.5.0.0 або подібне, тому я змінив webconfig, щоб виглядати до 4.5 та використовувати 4.5.


0

Жоден із цих варіантів не працював для мене, врешті-решт, це було;

Тест> Налаштування тесту> * .testrunconfig

Мені довелося додати новий рядок

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

Переконайтесь, що шлях та версія правильні для вашої установки.


0

У мене було те саме питання. Я створив веб-проект api, а потім оновив його з .net 4.5.1 до .net 4.6.1. Закриття IDE, зупинення IIS та видалення вмісту C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Тимчасові файли ASP.NET \ dir виправили проблему.

HTH


0

Ця проблема не була вирішена для мене оновленням пакетів NuGet або виконанням проекту «Очистити» над проектом. Це було вирішено шляхом очищення папки "obj" вручну.


0

Ось моє рішення цієї проблеми, переконайтесь, що номер версії в appconfig або packageconfig такий, як у довідковій версії у ваших посиланнях. Дивіться тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.