C# 发现System.Net.Http之间存在冲突
我的VS解决方案中有几个项目。每当我将“System.Net.Http”NuGet包添加到一个包中时,它就会显示为版本4.2.0.0。然后我做同样的事情,添加相同的NuGet包,但是,另一个说的是版本。4.1.1.2 然后我得到一个警告: 发现System.Net.Http之间存在冲突 编辑1:C# 发现System.Net.Http之间存在冲突,c#,.net,nuget,service-fabric-stateful,C#,.net,Nuget,Service Fabric Stateful,我的VS解决方案中有几个项目。每当我将“System.Net.Http”NuGet包添加到一个包中时,它就会显示为版本4.2.0.0。然后我做同样的事情,添加相同的NuGet包,但是,另一个说的是版本。4.1.1.2 然后我得到一个警告: 发现System.Net.Http之间存在冲突 编辑1: Gathering dependency information took 1.7 sec Attempting to resolve dependencies for package 'Syste
Gathering dependency information took 1.7 sec
Attempting to resolve dependencies for package 'System.Net.Http.4.3.3' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'System.Net.Http.4.3.3'
Resolved actions to install package 'System.Net.Http.4.3.3'
Retrieving package 'System.Net.Http 4.3.3' from 'nuget.org'.
Adding package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to 'packages.config'
Successfully installed 'System.Net.Http 4.3.3' to ....Service
Executing nuget actions took 2.05 sec
Time Elapsed: 00:00:03.8937113
请注意安装了正确的版本,但是=>Props=>版本显示为4.1.1.2
您可以强制安装您正在安装的版本,这样您就可以使两个项目保持一致,或者在输出窗口中找到一条消息,告诉您出了什么问题或依赖项是什么。 由于列出了4.2版,我会这样做(解决方案范围) 或者两个项目都有
Get-Project ProjectName | Install-Package System.Net.Http -Version 4.1.1
或者更好(使用最新版本)
编辑
。
答案呢?
基本上,您可以对齐项目配置文件的这一部分:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
您可能必须调整标记值。
以防万一,您是否可以为两个项目粘贴配置文件=当您有对framework System.Net.Http的引用时,这通常会发生,但您的一个包引用需要NuGet package System.Net.Http
查看是否有对该程序集的引用,将其删除并安装NuGet软件包,而不是编辑:这仅在使用.NET Framework时发生。在.NET Core/Standard land中,最新的
System.NET.Http
assembly版本似乎总是4.1.2.0—没有可用的4.2.0.0版本
关于System.Net.Http的问题比这里的答案似乎暗示的要复杂得多
System.Net.Http
NuGet软件包,但不是,它将不安装同一程序集的最新版本(它包含System.Net.Http
程序集的版本4.1.1.2,而不是4.2.0.0)System.Buffers
(4.5.0版适合我)System.Net.Http
4.2.0.0程序集,请向项目添加System.Buffers
4.5.0+NuGet引用
参考资料:
- (-断开的链接)
System.Net.Http
的任何引用(对于使用PackageReference的项目,您应该在解决方案资源管理器中的引用旁边看到NuGet符号)。如果确定项目需要System.Net.Http
(请先尝试在不使用它的情况下构建),请使用相应的NuGet包替换删除的System.Net.Http
引用。对于使用packages.config的项目,请特别注意确保需要引用System.Net.Http
,并且它们也在使用NuGet。不管怎样,通过NuGet删除和重新添加System.Net.Http
(适用于引用它的所有项目),即使已经使用NuGet引用了它。我发现第二步可能会导致某些不相交的地方我花了很多时间试图有条不紊地解决这个问题,因此我相信上述步骤将完全解决大多数人的问题,尽管对于不寻常的情况可能需要一些横向思考。让我知道这对您是否有效。有一个新的解决方案,从
Install-Package System.Net.Http -Version 4.3.3
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<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>
<PropertyGroup>
<AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
</PropertyGroup>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
</dependentAssembly>