Проект Visual Studio 2012 Web API не запускается - не удается найти Newtonsoft.Json
После запуска чистого решения и восстановления мой проект MVC 4 Web API перестает работать. Он не может найти Newtonsoft.Json.
Я знаю, что MS использует это как сериализатор JSON по умолчанию, но его нет в списке ссылок для проекта, и я не могу добавить его из NuGet, поскольку он говорит, что он уже установлен.
Кто-нибудь знает здесь, что может быть неправильным?
Полная трассировка стека:
[FileNotFoundException: не удалось загрузить файл или сборку 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed 'или одна из его зависимостей. система не может найти указанный файл.]
MvcWebRole1.WebApiApplication.Application_Error() в d:\Data\Source Управляемая Проекты \georace\georace\Server\GeoRaceServer\MvcWebRole1\Global.asax.cs: 70
[HttpException (0x80004005): не удалось загрузить файл или сборку 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed 'или одна из его зависимостей. система не может найти указанный файл.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext контекст, приложение HttpApplication) +12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, контекст HttpContext, обработчики MethodInfo [] +175
System.Web.HttpApplication.InitSpecial(состояние HttpApplicationState, Обработчики MethodInfo [], IntPtr appContext, контекст HttpContext) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr контекст приложения, контекст HttpContext) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475
[HttpException (0x80004005): не удалось загрузить файл или сборку 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed 'или одна из его зависимостей. система не может найти указанный файл.]
System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +12851296 System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +12679949
Ответы
Ответ 1
Хорошо - нашел работу вокруг себя, разместив на случай, если кто-то другой заразится этой ошибкой MS.
Проблема в том, что вы не можете добавить ссылку NuGet, как она уже включена в пакеты по умолчанию. Так что...
- Открыть пакет .config
- Удалить запись Newtonsoft.Json.
- Сохранить и построить
- Повторно добавьте Newtonsoft.Json из NuGet.
- Сборка и запуск
Ответ 2
Для любого пакета, уже установленного NuGet, который вы хотите переустановить, введите следующую команду в Консоль диспетчера пакетов:
Обновление в любом проекте:
Update-Package Newtonsoft.Json -Reinstall
Обновление в конкретном проекте
Update-Package Newtonsoft.Json -Reinstall -Project My.App
Ответ 3
Единственное, что зафиксировало эту ошибку, - это добавить отсутствующий раздел в мой файл web.config, который я получил от этого ответа здесь: fooobar.com/questions/92866/...
Вот что мне нужно добавить:
<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>
Ответ 4
Я объединил пару вариантов, о которых говорили другие участники SO, плюс новый.
Во-первых, Оказывается, что Nuget 2.1 имеет некоторые проблемы, и эта проблема была зарегистрирована в ошибке и была исправлена в 2.2.2. См. Здесь: https://nuget.codeplex.com/workitem/3050
Итак, я сделал следующие шаги:
- Обновлена версия Nuget до версии 2.2.2 по ссылке
- Удалены все ссылки на Json в моем проекте, удалив из NUget (щелкните правой кнопкой мыши проект и найдите пакет и удалите (Even
это не делалось)
- Физически удаленные файлы пакета с компьютера. Я нашел файлы пакетов здесь://projectdir/packages/Newtonsoft.JSON
- Удален файл packages.config из физического каталога (//projectname/packages.config)
- Как только все это было завершено, я снова добавил Newtonsoft через Nuget, затем сделал пересоздание, и он сработал.
Ответ 5
У меня была та же проблема (в VS2012). Никакой ответ не помог мне. Наконец я решил это следующим образом:
1)
Перейти к ИНСТРУМЕНТУ → РАСШИРЕНИЯ И ОБНОВЛЕНИЯ
здесь обновить (или установить) "NuGet Package Manager"
затем перейдите в "Интернет" и установите "Быстрое добавление NuGet" и "Ссылки на NuGet"
2) после того, как все в 1)
в вашем проекте щелкните правой кнопкой мыши "Ссылки" и выберите "Управление пакетами Nuget",
в "Установленные пакеты" найдите Json.NET. Нажмите "Удалить" - вы не можете сделать это сейчас, но он покажет вам, что вы должны сначала удалить (некоторый клиент ASP Web Api). Поэтому удалите все эти файлы и попробуйте удалить "Json.NET" еще раз.
Теперь перейдите в "Интернет" и установите "Json.NET", "Библиотеки клиентов ASP.NET WEB API" и "OData клиента веб-интерфейса ASP.NET".
3) в строке удаления Global.asax "WebApiConfig.Register(GlobalConfiguration.Configuration);"
построить решение, и все будут в порядке..
Надеюсь, это может помочь кому-то:) gl
Ответ 6
Проверьте, была ли у вас ссылка "старый стиль" (pre nuget) на JSON.NET, указывающая на устаревшую локальную копию, встроенную в ваш проект.
У меня был старый Reference\Lib\JSON.NET
, который был в моем ссылочном пути и получил приоритет.
Убедитесь, что страница свойств JSON.NET указывает на ожидаемую версию пакета Nuget.
У меня возникла проблема с сборкой Team Server, которая была развернута в прямом эфире. Я должен был исправить свое оригинальное решение и сделать чистую сборку, чтобы убедиться, что старая DLL Reference\Lib\
не была поднята.
Ответ 7
У меня было такое же FileNotFoundException, и оказалось, что у меня уже есть ссылка на Newtonsoft.Json в моем проекте, НО свойство "Копировать локальное" не было установлено в TRUE.
Просто установите его в ИСТИНА, чтобы dll скопировалось в выходной каталог, если это тоже ваш случай.
Ответ 8
Я проверил все, что было сказано здесь, и ничего не получилось. В моем случае у меня была папка пути, подобная этой.
# причина моей проблемы. Я удалил # и работал нормально.
Ответ 9
Что вызвало мою проблему с Newtonsoft.json, было несколько иначе. Я разработал приложение Windows, построенное против .NET 4.5. Позже я узнал, что клиентская среда поддерживает только .Net 4.0. Я скопировал решение в новую область, чтобы сохранить работу .Net 4.5 и изменил Свойства решения на Microsoft.Net 4.0. Я получил ошибку, которую Newtonsoft.json не удалось найти, и мне не хватало ссылки.
Я выполнил описанные выше процедуры для удаления packages.config; удаление Newtonsoft.json; что Newtonsoft.json был удален из каталога \packages; затем переустановить Newtonsoft.json из NuGet. Я смог скомпилировать и запустить приложение с .Net 4.0
До этого файл packages.config показал, что версия .Net, на которую нацелилась Newtonsoft.json, была .Net 4.5. Удаление и добавление Newtonsoft.json теперь имеет цель как .Net 4.0.
Ответ 10
Я сделал это по ошибке, и он отлично сортировал его.
Запустив новый проект VS 2012, я использовал NuGet для установки Newtonsoft.JSON, поскольку упомянутая версия 4.5.6 уже установлена, и я был впечатлен, увидев, что она была удалена и установлена 4.5.10.
Сладкое.
Ответ 11
В моем случае я проверил проект коллеги, который каким-то образом изменил мою рекомендацию Newtonsoft.Json, поэтому мне пришлось ее удалить. Щелкните правой кнопкой мыши по проекту → Управление пакетами NuGet. На левой стороне нажмите "Установленные пакеты", затем выберите Json.NET и удалите его. В моем случае мне пришлось также удалить другие зависимые пакеты (Microsoft ASP.Net Web API и другие). Выберите "Интернет" с левой стороны и найдите Json.Net, переустановите его.
Ответ 12
Вы можете попытаться установить пакет SocialAuth.Net с флагом -IgnoreDependencies, а затем вручную установить зависимости и убедиться, что вы установили только самую последнюю версию библиотеки Json.Net.
Затем во время выполнения пакет SocialAuth.Net будет уважать перенаправление сборки и загружать Json.Net(v4.5) вместо старой версии.
Ответ 13
У меня была такая же проблема в VS2012 express, и мне удалось установить ее из
ИНСТРУМЕНТЫ → Менеджер пакетов NuGet → Управление пакетами NuGet для решения
Там я нашел и установил Newtonsoft Json. Он не был установлен ни в одном из проектов от решения.