Конфликт ссылок System.Net.Http возможно из-за .NET Standard 2.0 - PullRequest
0 голосов
/ 23 мая 2018

При создании проекта .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, и не указана ли моя «ссылка на объект»... "исключение связано с конфликтом, который упоминается при выводе сборки?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Мне удалось решить обойти эту проблему, закомментировав перенаправление привязки для System.Net.Http в проекте WebAPI.

Я не совсем уверен почему это работает, но работает.Я периодически проверяю, чтобы узнать, нужно ли мне это закомментировать.

0 голосов
/ 23 мая 2018

У меня возникла проблема с симуляцией, связанная с .NET Standard 2.0 и перенаправлениями привязки.Я решил это, добавив строки ниже в файл .csproj затронутого проекта (для меня проект unittest).Проблема объясняется здесь .

<PropertyGroup>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
...