Проблема компиляции с пакетом NuGet (предупреждение MSB3277)

#c# #nuget #visual-studio-2019

Вопрос:

Сегодня я обновил свои пакеты Nuget, использующие систему API Microsoft Graph, и теперь я получаю множество предупреждений, связанных с System.Net.Http .

В моем App.config у меня есть:

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/>
      </dependentAssembly>
   ...
   ...
 

Фактические предупреждения, которые я получаю, таковы:

 Found conflicts between different versions of "System.Net.Http" that could not be resolved.
There was a conflict between "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
    "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.
    References which depend on "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll].
        C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll
          Project file item includes which caused reference "C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll".
            System.Net.Http
    References which depend on "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [].
        C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll".
            C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
        C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll".
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
        C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll".
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
        C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll".
            C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
        C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll".
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.jsonwebtokens6.12.0libnet461Microsoft.IdentityModel.JsonWebTokens.dll
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.tokens6.12.0libnet461Microsoft.IdentityModel.Tokens.dll
            C:Usersajtru.nugetpackagessystem.identitymodel.tokens.jwt6.12.0libnet461System.IdentityModel.Tokens.Jwt.dll
        C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll".
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
        C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
          Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll".
            C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
            C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
 

Я компилирую с последней версией Visual Studio 2019 Community Edition.


Я заметил:

 References which depend on "System.Net.Http, Version=4.0.0.0,  ...  Framework.NETFrameworkv4.6.2System.Net.Http.dll].
 

Мои свойства приложения предназначены для этой платформы:

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

Так нужно ли мне переходить на другую используемую платформу 4.2.0.0 ?

Я путаюсь, потому что, согласно менеджеру пакетов NuGet, я думаю, что у меня есть фреймворк в порядке.


Обновить

В моем основном решении есть несколько общих проектов. Вышеупомянутый проект C# является одним из них. Существует еще один проект Visual Basic, в котором используется API Google Календаря, для этого проекта в App.config файле указано:

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

Я замечаю, что он говорит, чтобы его использовали 4.0.0.0 . Итак, есть ли здесь решение отредактировать проект c# App.config и изменить newVersion свойство в соответствии с ним? Чтобы прекратить конфликты?

Ответ №1:

Целевая платформа .NET Framework проекта консольного приложения C# по умолчанию содержит ссылку на System.Net.Http. Если вы не используете эту ссылку, вы можете удалить ее, и это очистит ваше предупреждение.

Комментарии:

1. В моем проекте Google (VB) в списке есть определенная запись Microsoft.Net.Http (версия 2.2.29). Я не хочу нарушать компиляцию, удаляя все, что необходимо системе. Как мы можем это подтвердить?

2. @AndrewTruckle, удалите его и посмотрите, что произойдет. Если он сломается, вы всегда можете добавить его обратно. В худшем случае вы всегда можете восстановить свой проект из системы управления версиями, если нарушите его.

3. ОК. Я попробую позже.

4. Я прокомментировал два раздела system.http.net в обоих файлах, и это сработало нормально. Спасибо.