I am using ASP.NET Core. I want to use HttpClient
but I noticed that there are two NuGet packages being offered. Which one do I use?
Depends on the version. The old System.Net.Http
packages (the 2.0 ones) are legacy packages which are deprecated in favor of Microsoft.Http.Net
according to the description:
Legacy package, System.Net.Http is now included in the 'Microsoft.Net.Http' package.
They exist to provide the HttpClient
in previous .NET versions and Portable Class libraries. You should use Microsoft.Net.Http
in that case.
Since you're using .NET Core, you should use the latest System.Net.Http
package (eg. 4.3.3).
Updated for csproj
As of .NET Standard 2.0, the System.Net.HttpClient
package is already included and available when you target netstandard2.0
. If, for some reason, you still want to reference it for both full .NET and .NET Core, you can add this to your csproj file:
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<!-- // HttpClient for full .NET -->
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
<!-- // HttpClient for .NET Core -->
<PackageReference Include="System.Net.Http" Version="4.3.3" />
</ItemGroup>
If you're using project.json
If your project.json targets both full .NET and .NET Core, you have to add the System.Net.Http
assembly to the frameworkAssemblies
element. For example:
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0" // HttpClient for full .NET
}
},
"netstandard1.3": {
"dependencies": {
"System.Net.Http": "4.1.0", // HttpClient for .NET Core
}
}
}