使用 NuGet 包编译时出现问题(警告 MSB3277)

Problem compiling with NuGet package (warning MSB3277)

今天我更新了使用 Microsoft Graph API 系统的 Nuget 包,现在我收到了很多与 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 Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Net.Http.dll].
        C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Net.Http.dll
          Project file item includes which caused reference "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.Net.Http.dll".
            System.Net.Http
    References which depend on "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [].
        C:\Users\ajtru\.nuget\packages\azure.core.17.0\lib\net461\Azure.Core.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\azure.core.17.0\lib\net461\Azure.Core.dll".
            C:\Users\ajtru\.nuget\packages\azure.core.17.0\lib\net461\Azure.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
        C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
        C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
        C:\Users\ajtru\.nuget\packages\microsoft.identity.client.35.1\lib\net461\Microsoft.Identity.Client.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.identity.client.35.1\lib\net461\Microsoft.Identity.Client.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.identity.client.35.1\lib\net461\Microsoft.Identity.Client.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
        C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.logging.12.0\lib\net461\Microsoft.IdentityModel.Logging.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.logging.12.0\lib\net461\Microsoft.IdentityModel.Logging.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.logging.12.0\lib\net461\Microsoft.IdentityModel.Logging.dll
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.jsonwebtokens.12.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.12.0\lib\net461\Microsoft.IdentityModel.Protocols.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.openidconnect.12.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.tokens.12.0\lib\net461\Microsoft.IdentityModel.Tokens.dll
            C:\Users\ajtru\.nuget\packages\system.identitymodel.tokens.jwt.12.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll
        C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.12.0\lib\net461\Microsoft.IdentityModel.Protocols.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.12.0\lib\net461\Microsoft.IdentityModel.Protocols.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.12.0\lib\net461\Microsoft.IdentityModel.Protocols.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.openidconnect.12.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
        C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.openidconnect.12.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
          Project file item includes which caused reference "C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.openidconnect.12.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll".
            C:\Users\ajtru\.nuget\packages\microsoft.identitymodel.protocols.openidconnect.12.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.core.0.2\lib\net462\Microsoft.Graph.Core.dll
            C:\Users\ajtru\.nuget\packages\microsoft.graph.2.0\lib\net462\Microsoft.Graph.dll

我正在使用最新版本 Visual Studio 2019 Community Edition 进行编译。


我注意到了:

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

我的应用程序属性适用于该框架:

那么我是否必须更改为使用 4.2.0.0 的不同框架?

我很困惑,因为根据 NuGet 包管理器的说法,我认为我拥有的框架没问题。


更新

我的主要解决方案有几个共享项目。上面的 C# 项目就是其中之一。还有另一个 Visual Basic 项目使用 Google Calendar API 投射 App.config 文件的 din 说:

  <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 属性以匹配吗?停止冲突?

C# 控制台应用程序项目目标 .NET Framework 默认包含对 System.Net.Http 的引用。如果您不使用该引用,则可以将其删除,这将清除您的警告。