I have several projects in my VS solution. Whenever I add \"System.Net.Http\" NuGet package to one it shows as version 4.2.0.0. Then I do the same and add same NuGet Package
This tends to happen when you have a reference to the framework System.Net.Http, but one of your package references requires the NuGet package System.Net.Http.
See if you have a reference to that assembly, remove it and install the NuGet package instead
You can force the version you're installing, so you can have both projects aligned or find a message in the output window, which would be telling you what's wrong or what your dependencies are. Since the official link lists no 4.2 release, I would do this (solution-wide)
Install-Package System.Net.Http -Version 4.1.1
Or for both projects
Get-Project ProjectName | Install-Package System.Net.Http -Version 4.1.1
Or, even better (using the last version)
Install-Package System.Net.Http -Version 4.3.3
EDIT
Apparently you are not the first to experience this. How about the answer here? Basically you can align this section of both projects config file:
<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>
You might have to adapt the token value. Just in case, could you paste the config file for both projects=
After going through all the solutions presented here and the references cited in this answer, I finally resolved this completely. This is what I believe anyone who experiences this issue should do:
System.Net.Http
that are not managed by NuGet (for projects using PackageReference, you should see the NuGet symbol next to the reference in Solution Explorer). Replace the removed System.Net.Http
references with the corresponding NuGet package if you're certain your project requires System.Net.Http
(try building without it first). For projects using packages.config, take extra care to ensure that references to System.Net.Http
are required and that they are also using NuGet. It may help to remove and re-add System.Net.Http
via NuGet anyway (for all projects referencing it), even if already referenced using NuGet. I found that step 2 can cause some disjoint somewhere.If you later find that you get run-time exceptions (even during unit testing) due to manifest mismatches after adding a reference somewhere, remove all the binding redirects from the website project concerned, then re-add the suggested ones given in the warning as per step 6.
I spent a lot of time trying to resolve this issue methodically, so I believe the above steps would fully resolve most people's issues, although some lateral thinking might be required for unusual cases. Let me know if this works (or doesn't work) for you.
Edit: This happens only when using .NET Framework. In .NET Core/Standard land, the latest System.Net.Http
assembly version seems to be always 4.1.2.0 - there is no 4.2.0.0 version available.
The issue regarding System.Net.Http is way, way more complicated then the answers here seem to imply...
System.Net.Http
NuGet package, but no, it will not install the latest version of the same assembly (it contains version 4.1.1.2 of the System.Net.Http
assembly, not 4.2.0.0).System.Buffers
(version 4.5.0 worked for me).TL;DR:
Add System.Buffers
4.5.0+ NuGet reference to your project, if you want to make sure it is using System.Net.Http
4.2.0.0 assembly.
References:
I tried out various solutions (removing the dependentAssembly OR specifying the binding redirect as well). None of them worked.
However, the only solution which worked for me was to explicitly set Specific Version for System.Net.Http (or whatever DLL giving you version issues) to False from Visual Studio.
The 6 steps that Neo posted above helped me solve my ASP.NET package problems! Thank you Neo! I was dealing with this for over a week.
I just want to share my personal notes from my experience of implementing Neo's post above.
I had an ASP.NET Web API project that targeted .Net Framework 4.6.1
Here is what I did:
<PropertyGroup> <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences> </PropertyGroup>