Не удалось загрузить файл или сборку Newtonsoft.Json Версия = 11.0.0.0

Я прочитал много ответов на предыдущие версии этой проблемы, но, похоже, ни одна из них не работает.

Каждый раз, когда я открываю свой скриптовый компонент в Visual Studio 2015 (v14.0.25431.01, обновление 3), он сообщает мне, что мне не хватает ссылки на Newtonsoft.Json. Итак, я захожу в диспетчер пакетов NuGet, и он просит меня восстановить, что я делаю, и говорит, что оно успешно завершено.

Затем я сохраняю и пытаюсь запустить свой пакет SSIS и получаю следующую ошибку.

Не удалось загрузить файл или сборку Newtonsoft.Json, Version = 11.0.0.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed или одну из ее зависимостей. Система не может найти указанный файл.

мой файл packages.config выглядит так.

    <?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net45" />
</packages>

и мой файл app.config выглядит так.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json"
                publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Я могу перейти к папке, которую он ищет, и увидеть файл .dll

C: \ Users \ lp1.db \ AppData \ Local \ Temp \ Vsta \ SSIS_SC130 \ VstaGbmf__V5kCUWonnRT2qrG_g \ packages \ Newtonsoft.Json.11.0.1 \ lib \ net45 \ Newtonsoft.Json.dll

У кого-нибудь еще была эта постоянная проблема с потерей возможности найти файл, несмотря на то, что он был установлен.


person Lucas Perrett    schedule 05.03.2018    source источник
comment
@Hadi Я не уверен, что удаление тега Visual Studio, как вы, здесь правильно. Вы уверены, что это не связано с визуальной студией (или, возможно, с nuget)?   -  person Alex Telon    schedule 05.03.2018
comment
Я думаю, проблема в том, что если ваш проект - NET 4.6.2, вам следует использовать версию 9.0.1 max. Если вы хотите использовать более поздние версии, вам следует обновить свой проект до NET 4.7.2 - я думаю, это как-то связано с переходами от NET STANDARD 1.6 к 2.0.   -  person Piotr Kula    schedule 11.10.2018


Ответы (7)


Удалите все ссылки на Newtonsoft.Json во всех своих проектах.

Перейдите в диспетчер пакетов Nuget (щелкните решение правой кнопкой мыши), загрузите последнюю версию Newtonsoft.Json, выберите все проекты, которые будут ее использовать, и переустановите ее.

Убедитесь, что в файле packages.config установлена ​​последняя версия:

<packages>
  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
</packages>

Восстановить решение.

person live-love    schedule 10.07.2018

Это одна из самых распространенных проблем в проектах .NET. В основном кто-то делал ссылку непосредственно на локальную сборку, вместо того, чтобы управлять пакетом через NuGet, или проект был скомпилирован в другой версии .NET. Лучший способ решить эту проблему - найти ссылку в ссылках на ваш проект, удалить ее, очистить проект, проверить, исчезла ли DLL, и, наконец, переделать ссылку с помощью NuGet.

person Balbinator    schedule 10.07.2018

Попробуйте скопировать NewtonSoft.Json в папку среды выполнения SQL SSIS

C:\Program Files (x86)\Microsoft SQL Server\[SQL Server version]\DTS\Binn

пример (SQL Server 2016)

C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn
person Hadi    schedule 05.03.2018
comment
Попробуйте скопировать файл dll во внешнюю папку. Удалите ссылку и снова добавьте ее из этой папки - person Hadi; 05.03.2018

Попробуйте очистить свой проект.

Чистый проект в Visual Studio

Если это не сработает, удалите ссылку под ссылками. Сохраните файл dll в папке bin, а затем добавьте его снова. Просмотрите свой файл, выберите его и нажмите ОК.

person Sam    schedule 05.03.2018

У меня была аналогичная проблема, когда у меня было два разных проекта в одном решении, в котором один из них относится к версии 11.0.2, а другой - к версии 6.0.4. В этом случае попробуйте сохранить одну и ту же версию для них обоих и повторите попытку.

person Krishna_Anipindi    schedule 20.11.2018

Лучший ответ здесь: Не удалось загрузить файл или сборку Newtonsoft.Json, Version = 9.0.0.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed или одну из их зависимостей

    public static void SetBindingRedirect()
    {
        AppDomain currentDomain = AppDomain.CurrentDomain;
        currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
    }

    private static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
    {
        if (args.Name.Contains("Newtonsoft.Json"))
        {
            string assemblyFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Newtonsoft.Json.dll";
            return Assembly.LoadFrom(assemblyFileName);
        }
        else
            return null;
    }
person James Joyce    schedule 19.05.2020

скопируйте и вставьте Newtonsoft.Json.dll и Newtonsoft.Json.xml, доступные в вашей сборке / выпуске или сборке / отладке, в развернутый ProjectFolder

person nimal j valath    schedule 03.04.2021