2013-08-28 23 views
14

私は新しい.Net 4.0プロジェクトを開始しており、公開APIでいくつかの作業を行っています。私はMicrosoft HttpClientクラスを使用する予定ですので、最新の安定版のMicrosoft.Net.Http NuGetパッケージ(バージョン2.2.13)をインストールしました。私はまた、HttpClientをのためのNuGetパッケージを使用して、同僚が一緒に入れ、いくつかのPOCコードを見ていると、このようなコードがあることに気づくよ:私のプロジェクトでHttpClientとReadAsAsync ()拡張メソッド

HttpClient client = new HttpClient(); 
HttpResponseMessage response = client.GetAync("/uri").Result; 

DomainType result = response.Content.ReadAsAsync<DomainType>().Result; 

を、Microsoft.Netへの参照を追加した後。 Httpパッケージで、同様のコードを書くときに、私はHttpResponseMessageにReadAsAsync<T>()メソッドがないことに気付きました。私の同僚のPOCソリューションでいくつかの調査を行った後、実際にアセンブリのReadAsAsync<T>()が拡張メソッドであるように見えます。このPOCソリューションでは、System.Net.Http.Formattingへの参照がありますが、このファイルはパスC:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dllから取得しています。

私の質問は、ローカルASP.Netインストールからこのアセンブリを参照するよりも、この拡張メソッドにアクセスする方が良い解決策がありますか?私の関心事は、これはASP.Netがインストールされていない可能性があるため、これがCIサーバー上で問題を引き起こすということです。私はSystem.Net.Http.Formattingを私のソリューションのLibディレクトリにコピーすることができたと思いますが、私はこのアセンブリを私に与えてくれる別のNuGetパッケージなどのより良いオプションがあることを期待しています。

ありがとうございます!

+0

アセンブリを使用するには(拡張メソッドかどうかは関係ありません)何らかの方法で参照する必要があります。 'C:\ Program Files ...'パスは、配備されているサーバ上では重要ではありません。 –

+0

しかし、私はアセンブリの参照がどのように機能するかを理解しています。 C:\ Program Filesの問題は、そのパスがCIサーバーに存在しない可能性が高いことです。それで、私はそれを見る方法で、そのアセンブリを私のソリューションの下にあるLibディレクトリにコピーして、ソースコントロールに追加して、ソリューションをビルドするときにCIによって取得されるようにするか、できれば他のNuGetパッケージその中のアセンブリ。 –

答えて

32

これはWebAPIクライアントライブラリパッケージの一部です。 Microsoft.AspNet.WebApi.Clientナゲットパッケージをインストールします。

+2

これは.NET Coreで動作しますか?私はこのナゲットパッケージを追加しました。しかし、それはまだ動作しません。私は文を使用していくつかの行方不明ですか? – JedatKinports