System.Net.Http против Microsoft.Net.Http

Я использую ASP.NET 5 и MVC 6. Я хочу использовать HttpClient, но я заметил, что предлагаются два пакета NuGet. Какой из них я использую?

Ответ 1

Зависит от версии. Старые пакеты System.Net.Http (2.0) - это устаревшие пакеты, устаревшие в пользу Microsoft.Http.Net в соответствии с описанием:

Пакет Legacy, System.Net.Http теперь включен в Пакет Microsoft.Net.Http.

Они существуют для предоставления HttpClient в предыдущих версиях .NET и библиотеках Portable Class. Вы должны использовать Microsoft.Net.Http в этом случае.

Поскольку вы используете .NET Core, вы должны использовать последний пакет System.Net.Http (например, 4.1.0).

Если ваш project.json нацелен как на полный .NET, так и на .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
    }
  }
}

Ответ 2

Microsoft.Net.Http требует дополнительных зависимостей Microsoft.Bcl.

Для этого, если вы нацелены только на .NET Framework или .NET Core, System.Net.Http это хорошо. В противном случае Microsoft.Net.Http будет лучшим выбором, поскольку это может быть следующее поколение.