1. ホーム
  2. c#

[解決済み] System.Net.Http vs Microsoft.Net.Http

2023-02-14 01:36:21

質問

ASP.NET Coreを使用しています。私は HttpClient を使用したいのですが、2つのNuGetパッケージが提供されていることに気づきました。どちらを使えばいいのでしょうか?

どのように解決するのですか?

バージョンに依存します。古い System.Net.Http パッケージ( 2.0 のもの) はレガシーパッケージであり、非推奨となっています。 Microsoft.Http.Net という説明に従っています。

レガシー パッケージである System.Net.Http は現在、'Microsoft.Net.Http' パッケージに含まれています。 'Microsoft.Net.Http' パッケージに含まれています。

を提供するために存在しています。 HttpClient を以前の.NETバージョンやポータブルクラスライブラリで使用するために存在します。を使用する必要があります。 Microsoft.Net.Http を使うべきです。

.NET Coreを使用しているため、最新の System.Net.Http パッケージ (例: 4.3.3) を使用する必要があります。

csprojの更新

.NET Standard 2.0の時点で System.Net.HttpClient パッケージは既に含まれており netstandard2.0 . 何らかの理由で、まだ完全な .NET と .NET Core の両方で参照したい場合は、csproj ファイルにこれを追加できます。

<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>


project.jsonを使用している場合

project.jsonが完全な.NETと.NET Coreの両方を対象にしている場合、.NET Coreの System.Net.Http アセンブリを frameworkAssemblies 要素に追加します。例えば

"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
    }
  }
}