Не вдалося завантажити файл або збірку "System.Net.Http.Formatting" або одну з її залежностей. Система не може знайти вказаний шлях


158

У мене є невеликий додаток MVC, який я використовую з практичних причин, але тепер я щоразу виникаю помилку, коли намагаюся налагоджувати:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.

Я гуглив, але не можу знайти рішення. Я використовую .NET 4.5.

Це не може бути файл DLL, тому що я використовую .Net 4.5.


1
дивіться залежність тут .. nuget.org/packages/System.Net.Http.Formatting
Vishal Sharma

Я спробував це, і це не спрацювало ... Натомість я отримав помилку в менеджері пакунків: "NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand"
Норріс,

Відповіді:


185

Кожен раз, коли у мене є помилка NuGet, як-от ці, зазвичай я вживаю наступних дій:

  1. Перейдіть до папки пакетів у Провіднику Windows та видаліть її.
  2. Відкрийте Visual Studio та перейдіть до Інструменти > Менеджер пакунків бібліотек > Налаштування диспетчера пакунків, а під пунктом Диспетчер пакунків зліва знаходиться кнопка «Очистити кеш пакету». Натисніть цю кнопку та переконайтеся, що прапорець "Дозволити NuGet завантажувати відсутні пакети під час збирання" встановлений.
  3. Очистіть розчин
  4. Потім клацніть правою кнопкою миші рішення в Провіднику рішень і увімкніть NuGet Package Restore
  5. Побудуйте рішення
  6. Перезапустіть Visual Studio

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


Редагувати >>>

Для Visual Studio 2013 та вище, крок 2) повинен читати:

  1. Відкрийте Visual Studio і перейдіть до Інструменти > Параметри > NuGet Package Manager, а праворуч розміщена кнопка «Очистити кеш пакету». Натисніть цю кнопку та переконайтесь, що прапорці "Дозволити NuGet завантажувати відсутні пакети" та "Автоматично перевіряти наявність відсутніх пакетів під час збирання у Visual Studio".

7
Це спрацювало ... Вирішили проблему ... Спасибі Jordan_Walters ... Мені не вистачає Rep для голосування ... інакше ваша допомога була дуже вдячна
Norris

10
Хороша порада, але це не вирішило мою проблему із "Неможливо завантажити файл чи збірку" System.Net.Http.Formatting "або однією з її залежностей. Система не може знайти вказаний шлях". Для мене мені довелося перейти до інструментів / NuGet Package Manager / Package Manager Console, а потім "Update-Package -ProjectName MyProject -reinstall". Все виправлено!
GeoMac

3
@YuraZaletskyy Я думаю, що це в $ {SolutionDir} / пакети /. Тобто папка кореневого рішення.
jakejgordon

1
Чудові поради, дякую, вони мені справді допомогли. Сподіваюся, ви не заперечуєте, що я додав додаткову інформацію для відображення пізніших версій Visual Studio.
Шерідан

1
Я дотримувався вищезазначеного, але помилка залишилася - я вручну переглянув версію dll, і коли я перевірив мій файл web.config, були дублікати, просто залиште один запис, щоб відповідати вашій версії dll, і все повинно працювати - це зробило для мене
JazziJeff

168
  • Видаліть усі посилання коду на System.Net.*

  • у вікні пакета,

    Install-Package Microsoft.AspNet.WebApi.Client

  • Очистіть і відновіть свій проект


2
Щойно я зіткнувся з цією проблемою, і я встановив останню версію пакету NuGet Microsoft.AspNet.WebApi.Client, і тоді я побачив System.Net.Http.Formatting у своєму списку посилань.
ewomack

Я спробував все інше. Це єдиний, хто працював на мене.
Тимофій Канський

Працювали для мене. Обов’язково встановіть правильну версію.
CrusherJoe

1
Це рішення працює після того, як я оновив мій Web.Config bindingRedirectдля System.Net.Http.Formattingі System.Web.Httpдо нової встановленої попередньою командою ... тобто пішов від <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>до<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Саган

Чи то так, що багато хто з нас просто бракували пакету Microsoft.AspNet.WebApi.Client NuGet?
carlin.scott

27

Я знайшов зайву

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" />
  </dependentAssembly>

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


як ви знаєте, що таке публічний маркер версії? b03f5f7f11d50a3a
eran otzap

Її автоматично додає команда консолі менеджера пакунків: Add-BindingRedirect *
Simon Hughes

18

user3919888 вказав мене в правильному напрямку, але мені потрібно було запустити Update-Package -reinstall Microsoft.AspNet.WebApi.Clientв консолі Package-Manager. Базова установка сама по собі не розпізнає проблему, але визнає, що пакет уже встановлений і не замінює його.

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


16

Видалення наступних рядків із web.configвирішеної моєї проблеми. Зауважте, що в цьому проекті я не використовував компоненти WebApi. Тож для інших це рішення може не працювати як очікувалося.

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

як ви знаєте, що таке публічний маркер версії?
eran otzap

Наскільки я знаю, це загальнодоступний маркер усіх dll Microsoft незалежно від їх версії.
Махмуд Моравей

Щоб було смішно, я додав ці рядки, і це допомогло.
Кшиштоф Мадей

Це вирішило проблему і для мене.
Вішал

Це вирішило і мою проблему. Я перетворив старий проект веб-сайту у веб-додаток. Файл Web.config посилався на версію 5.2.7, тоді як встановлений пакет NuGet був 5.2.3. Видаливши це з Web.config виправили помилку.
Сезар Даніель

9

Для тих, хто використовує проект .NET Standard у поєднанні з проектами .NET Framework :

У спосіб .NET Standard пакети, що входять до проекту .NET Standard, будуть правильно використовуватися для інших проектів .NET Core та .NET Standard.

Що стосується способу .NET Framework, якщо ви посилаєтесь на проект .NET Standard від проекту .NET Framework (MVC), вам потрібно вручну завантажити та встановити ті самі пакети нугів.

Тож відповідь на моє запитання полягала в тому, що мені довелося завантажити та встановити Microsoft.AspNet.WebApi.Clientу веб-проект (.NET Framework), який використовує проект .NET Standard там, де Microsoft.AspNet.WebApi.Clientце потрібно. Насправді я вже встановив це, але була різниця у версії.

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


1
Я використовую .NET Core і знайшов посібник для знущання над HttpClient на gingter.org/2018/07/26/… . Слідом за цим керівництвом було подано мені проблему, описану в питанні ОП. І ви вирішили проблему :)
Thorkil Værge

Це те, що працювало для мене. Спробував рекомендований підхід, видаливши та відновивши всі пакунки, але врешті-решт мені довелося скористатися Nuget, щоб встановити Microsoft.AspNet.WebApi.Client, переконавшись, що це потрібна версія, і все після цього було добре,
Т.О. Тодоров,

Чудова відповідь - я починав думати, що мені потрібно перенести все назад до Рамок!
d219

6
  1. Видаліть усі посилання коду на System.Net.*
  2. Видалити: пакет Microsoft.AspNet.WebApiта його залежності.
  3. Перевстановити все: Пакет Microsoft.AspNet.WebApiта його залежності.
  4. Очистіть і відновіть свій проект

Дякую! Ти врятував мене через 2 дні відчайдушних спроб. Це мало не з розуму.
Марек Дорда

5

Як спочатку було запропоновано у коментарі GeoMac та задокументовано документи документа NuGet, мені працювало наступне, коли жоден з інших відповідей не працював:

Інструменти / NuGet Package Manager / Console Package Manager

Update-Package -ProjectName MyProjectName -reinstall

У мене є Visual Studio 2015. Це те, що мені довелося зробити, виправити це миттєво.
Даміан C

3

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

System.Net.Http.Formatting

від Visual studio та встановлення властивості Copy Local на true .

Сподіваюся, це якось корисно.


2
я зробив це, і це все ще буває
еран otzap

2

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


1
Це все, що було потрібно і для мене
Стів Вермеулен

1

Для мене це було так само просто

  1. Видаліть Microsoft.AspNet.WebApi.Clientіз папки пакунків у Провіднику Windows
  2. Відкрийте Інструменти> NuGet Package Manager> Console Package Manager
  3. Натисніть кнопку "Відновити"


1

Я зіткнувся з тією ж проблемою, оскільки

System.Net.Http.Formatting

версія, написана всередині webconfig, була 5.0.3, але всередині папки bin бібліотека System.Net.Http.Формація версії dll становила 4.0.2

тому я просто замінив той самий, що дається всередині сміттєвого бака

введіть тут опис зображення

введіть тут опис зображення

просто зробіть цей чистий проект і будуйте


0

Можливо, вам потрібно встановити посилання на бібліотеку як "Копіювати локальне = Істинне" у діалоговому вікні властивостей. У візуальній студії клацніть на "посилання", а потім клацніть правою кнопкою миші на відсутній посилання, у контекстному меню властивості клацання ви повинні побачити копіювати локальне налаштування.


0

Для мене додавання кількох рядків нижче в WebApi.config працює, оскільки після оновлення нового пакунка нугів не вийшло

var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;

Не забудьте додати простір імен:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;

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

0

Що я зробив для вирішення цієї проблеми

  1. Перейдіть до менеджера пакунків NuGet.

  2. Виберіть оновлення (на панелі ліворуч)

  3. Оновлення компонентів WebApi

  4. Після цього проект пройшов без помилок.


0

VS2019: Інструменти -> Nuget Package Manager -> Настройка диспетчера пакунків -> у розділі «Відновлення пакета» перевірте 2 варіанти. Після цього перейдіть у папку пакетів проектів та видаліть усі дочірні папки всередині (щоб більше не було помилок). Потім рішення Rebuild, Nuget повторно завантажить усі пакети, і проект повинен працювати без будь-яких посилань.


0

У мене була проблема з проектом ASP.NET у VS 2019.

Ще одним симптомом було те, що деякі посилання (System.Web.Http) були відзначені як несправні у списку посилань на проект (Провідник рішень)

Моє рішення:

  1. Видаліть несправні посилання у Project -> References (клацання правою кнопкою миші, ...)
  2. Побудувати
  3. Перейдіть до помилок збірки "Не вдалося знайти ім'я типу чи простору імен [...]" або подібні
  4. Скористайтеся пунктом "Показати потенційні виправлення" -> Встановити пакет

Причина:

Переглядаючи різницю у файлі csproj, я міг бачити причину неполадки. Хтось зумів посилатися на DLL у папці файлів програми Windows!

<Reference Include="System.Web.Http">
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.