Я скопировал свой проект на чистый компьютер с Windows 10, на котором установлены только Visual Studio 2015 Community и SQL Server 2016 Express. Нет никаких других версий фреймворка, кроме установленных с Windows 10 и VS2015 или SQL Server.
Когда я пытаюсь запустить проект WebApi, я получаю сообщение:
Не удалось загрузить файл или сборку «System.Net.Http, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» или одна из ее зависимостей. Система не может найти указанный файл.
Пакеты проекта включают в себя:
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
После сборки проекта с помощью .NET Framework 4.6.1 System.Net.Http
файл не найден в bin
папке.
Путь файла указывает на:
C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework.NETFramework \ v4.6.1 \ System.Net.Http.dll
Путь к файлу System.Net.Http.Formatting
указывает на:
C: \ Development \ MyApp \ пакеты \ Microsoft.AspNet.WebApi.Client.5.2.3 \ Lib \ net45 \ System.Net.Http.Formatting.dll
Должен ли весь проект нацелиться на 4.5.1 или есть другой способ ссылки на правильные сборки?
источник
update-package xxx -reinstall
за всеми пакетами nuget, которые я использую. Это тоже не работает.Ответы:
Выполните следующие шаги,
web.config
Добавьте это в
.csproj
файл:bin
папке должен быть(WebAppName).dll.config
файлweb.config
.csproj
файлаОн должен работать
источник
Изменение информации о связывании в моем web.config (или app.config) - хотя, на мой взгляд, «хак» позволяет вам двигаться вперед с вашим проектом после того, как обновление пакета NuGet ударит ваше приложение и даст вам System.Net.Http ошибка.
Set newVersion = "4.0.0.0"
источник
В одном из моих проектов был пакет nuget с более высокой версией System.Net.Http. и в моем проекте запуска есть ссылка на System.Net.Http v 4.0.0, я только что установил пакет nuget System.Net.Http в свой проект запуска, и проблема решена
источник
A
,B
иC
.A
является проект запуска, и не имеет ничего общего ни сB
илиC
.C
это тестовый проект дляB
. Запуск моих тестовC
не удался, потому что у меня не было эталонного проекта (System.Net.Http)A
.Изменить следующее:
со следующим:
в web.config
источник
Если в вашем решении есть несколько проектов, щелкните правой кнопкой мыши значок решения в Visual Studio и выберите «Управление пакетами NuGet для решения», затем нажмите четвертую вкладку «Консолидация», чтобы объединить все ваши проекты в одну и ту же версию библиотеки DLL. Это даст вам список ссылочных сборок для консолидации. Нажмите на каждый элемент в списке, затем нажмите «Установить» на вкладке, которая появляется справа.
источник
Вышеприведенный bind-redirect у меня не сработал, поэтому я закомментировал ссылку на
System.Net.Http
inweb.config
. Кажется, все работает нормально без этого.источник
Вы можете исправить это, обновив свой проект до .NET Framework 4.7.2. На это ответил Алекс Гиондеа - MSFT . Пожалуйста, проголосуйте за него, он действительно этого заслуживает!
источник
Это будет работать в .NET 4.7.2 с Visual Studio 2017 (15.9.4):
источник
У меня та же проблема, и единственный способ, как я могу это исправить, это добавить bindingRedirect в app.confing, как писал @ tripletdad99.
Но если у вас есть решение с большим количеством проектов, вам действительно нужно обновлять каждый проект вручную (а также иногда после обновления какого-либо пакета nuget, вам нужно сделать это снова). И это причина, почему я написал простой скрипт powershell, который, если все app.configs.
Пример использования
Возможно, он не идеален, и также будет лучше, если кто-нибудь свяжет его с заданием перед сборкой.
источник
4.6.1-2 в VS2017 пользователи могут столкнуться с нежелательной заменой своей версии System.Net.Http той, которую хочет использовать VS2017 или Msbuild 15.
Мы удалили эту версию здесь:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
и тут:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
Затем проект собирается с версией, на которую мы ссылались через NuGet.
источник
У меня было это, но это было, потому что я добавил пакет NuGet, который обновил перенаправления привязки. Как только я удалил пакет, перенаправления все еще были там. Я удалил их все, а затем запустил update-package -reinstall. Это добавило правильные перенаправления.
источник
Проверьте версию .net framework.
Мой оригинальный .net Framework - более старая версия.
После того, как я установил .net framework 4.6, эта проблема автоматически решается.
источник
Для меня я настроил свой проект на работу с последней версией .Net Framework (изменение с .Net Framework 4.6.1 на 4.7.2).
Все работало, без ошибок и публиковалось без проблем, и только случайно я наткнулся на сообщение об ошибке System.Net.Http, отображаемое в небольшом, трудно заметном, но довольно важном API-запросе к веб-сайту, на котором я находился ». Я работаю над.
Я откатился на 4.6.1 и все снова нормально.
источник
Единственный способ, который чисто решил эту проблему для меня (.NET 4.6.1), это не только добавить ссылку Nuget на System.Net.Http V4.3.4 для проекта, который фактически использовал System.Net.Http, но и на проект запуска (тестовый проект в моем случае).
(Что странно, поскольку в каталоге bin тестового проекта существовал правильный файл System.Net.Http.dll, а сборка Bingings .config тоже выглядела нормально.)
источник
Обновлял старый сайт, используя nuget (включая обновление .Net и обновление MVC).
Я удалил ссылку System.Net.HTTP в VS2017 (это была версия 2.0.0.0) и снова добавил ссылку, которая затем показала 4.2.0.0.
Затем я обновил тонну «пакетов», используя nuget, и получил сообщение об ошибке, затем заметил, что что-то сбросило ссылку на 2.0.0.0, поэтому я удалил и снова добавил, и все работает нормально ... странно.
источник