2015-06-25 3 views

risposta

44

dipende dalla versione. Le vecchie System.Net.Http pacchetti (le 2.0 quelli) sono pacchetti legacy, che sono deprecati in favore di Microsoft.Http.Net secondo la descrizione:

pacchetto Legacy, System.Net.Http è ora incluso nel 'Microsoft.Net.Http 'pacchetto.

Esistono per fornire lo HttpClient nelle precedenti versioni di .NET e librerie di classi portatili. In questo caso dovresti usare Microsoft.Net.Http.

Poiché si utilizza .NET Core, è necessario utilizzare l'ultimo pacchetto System.Net.Http (ad esempio 4.3.3).

aggiornato per csproj

Come di .NET 2.0 standard, il pacchetto System.Net.HttpClient è già incluso e disponibile quando si target netstandard2.0. Se per qualche ragione si vuole ancora fare riferimento a esso sia pieno .NET e .NET core è possibile aggiungere questo al file 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> 

Se stai usando project.json

Se project.json ha come target sia .NET che .NET Core completi, è necessario aggiungere l'assembly System.Net.Http all'elemento frameworkAssemblies. Per esempio:

"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

Ricorda che non hanno lo stesso identico comportamento. La versione .NET completa (4.0.0.0) non esegue la compressione automatica, mentre la versione .NET Core (4.1.0) lo fa. Pertanto, se si utilizza la versione .NET completa, è necessario configurare manualmente il gestore per utilizzare la compressione gzip/deflate. Descrizione: https://github.com/dotnet/docs/issues/1054 –

+14

Questa risposta riassume ciò che è diventato un disordine con .NET Core, .NET Standard e .NET Framework. – Vincent

+0

@vincent Non è più un rompicoglioni che il passato quando le persone usano il mono, ecc. La multi piattaforma ha sempre alcuni punti deboli. – rolls

6

Microsoft.Net.Http richiede ulteriori Microsoft.Bcl dipendenze.

Per questo, se si è interessati solo a .NET Framework o .NET Core, System.Net.Http è tutto a posto. Altrimenti, Microsoft.Net.Http sarebbe una scelta migliore in quanto potrebbe essere la prossima generazione.

+5

Sembra che la SM abbia cambiato idea quando questo post allude a ... https: //stackoverflow.com/questions/39016373/the-current-status-of-system-net-http-vs-microsoft-net-http microsoft .net.http non è stato aggiornato dal 2015 mentre system.net.http è solo qualche mese sago (nuget). – smoore4