2015-06-25 7 views

Odpowiedz

44

zależy od wersji. Stare System.Net.Http pakiety (te 2.0 nich) są starsze pakiety, które są przestarzałe na rzecz Microsoft.Http.Net zgodnie z opisem:

pakiecie Legacy, System.Net.Http jest obecnie zawarte w „Microsoft.Net.Http "pakiet.

Istnieją one w celu zapewnienia HttpClient w poprzednich wersjach .NET i bibliotekach przenośnych. W takim przypadku powinieneś użyć Microsoft.Net.Http.

Ponieważ używasz .NET Core należy użyć najnowszej System.Net.Http pakiet (np. 4.3.3).

Aktualizacja dla csproj

Jako standard .NET 2.0, pakiet System.Net.HttpClient jest już włączone i dostępne w przypadku kierowania netstandard2.0. Jeśli z jakiegoś powodu nadal chcesz odwoływać zarówno dla pełnego .NET i .NET Rdzenia można dodać do pliku 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> 

Jeśli używasz project.json

Jeśli twoje cele project.json zarówno pełne .NET i .NET Core, trzeba dodać zespół System.Net.Http do elementu frameworkAssemblies. Na przykład:

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

Należy pamiętać, że nie mają dokładnie takiego samego zachowania. Pełna wersja .NET (4.0.0.0) nie wykonuje automatycznej kompresji, natomiast wersja .NET Core (4.1.0). Więc jeśli używasz pełnej wersji .NET, musisz ręcznie skonfigurować program obsługi, aby używał kompresji gzip/deflate. Opis: https://github.com/dotnet/docs/issues/1054 –

+14

Ta odpowiedź podsumowuje, jaki bałagan stał się z .NET Core, .NET Standard i .NET Framework. – Vincent

+0

@vincent To nie jest bolesny tyłek, gdy ludzie używają mono itp. Platforma multi zawsze ma kilka punktów bólu. – rolls

6

Microsoft.Net.Http wymaga dodatkowych Microsoft.Bcl zależności.

W tym przypadku, jeśli jesteś ukierunkowany tylko na .NET Framework lub .NET Core, dobrze jest przejść na System.Net.Http. W przeciwnym razie lepszym wyborem byłby numer Microsoft.Net.Http, ponieważ może to być kolejne pokolenie.

+5

Wygląda na to, że MS zmieniło zdanie, ponieważ ten post nawiązuje do ... https: //stackoverflow.com/questions/39016373/the-current-status-of-system-net-http-vs-microsoft-net-http microsoft .net.http nie był aktualizowany od 2015 roku, podczas gdy system.net.http to tylko kilka miesięcy sago (nuget). – smoore4

Powiązane problemy