При создании проекта .NET я вижу
Обнаружены конфликты между различными версиями "System.Net.Http", которые не могут быть разрешены.
Более того, при вызове HttpClient.GetAsync(Uri)
я получаю исключение
Ссылка на объект не установлена на экземпляр объекта
Объект HttpClient
не должен бытьNULL, потому что я установил DefaultRequestHeaders, и в этот момент исключение не происходит.
Это происходит в проекте WebAPI, который ссылается на пакет NuGet System.Net.Http v4.3.3, в результате чего проект имеет System.Net.Http.dll v4.1.1.2.
Этот проект WebAPI также содержит ссылку на другой проект (который содержит вышеупомянутый вызов HttpClient.GetAsync(Uri)
), который также ссылается на пакет NuGet System.Net.Http v4.3.3.и что приводит к тому, что проект имеет System.Net.Http.dll v4.2.0.0.
Почему номера этих версий отличаются, поскольку оба проекта нацелены на .NET Framework v4.7.1?
Я пытался Update-Package -reinstall
, а также удалял и повторно добавлял ссылки NuGet.
Еще один момент, о котором стоит упомянуть, это то, что ссылочный проект ( т.е. , а не проект WebAPI) вturn ссылается на проект .NET Standard 2.0, который также ссылается на System.Net.Http v4.3.3.У меня была только эта проблема, так как этот самый внутренний проект был обновлен с .NET Standard 1.3 до 2.0.
Таким образом, цепочка
WebAPI (.NET Framework v4.7.1)
>System.Net.Http v4.3.3
> Библиотека классов (.NET Framework v4.7.1)
> System.Net.Http v4.3.3
> Библиотека классов (NET Standard 2.0)
> Система.Net.Http v4.3.3
Была известная проблема совместимости между проектами, ссылающимися на .NET Standard 2.0 и System.Net.Http (см. здесь ), но эта проблема вызвала желтыйпредупреждающая звездочка, тогда как у меня ее нет.
Может кто-нибудь объяснить, почему два верхних проекта имеют разные номера версий для System.Net.Http, несмотря на то, что ссылаются на один и тот же пакет NuGet, и не указана ли моя «ссылка на объект»... "исключение связано с конфликтом, который упоминается при выводе сборки?