私は新しい.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パッケージなどのより良いオプションがあることを期待しています。
ありがとうございます!
アセンブリを使用するには(拡張メソッドかどうかは関係ありません)何らかの方法で参照する必要があります。 'C:\ Program Files ...'パスは、配備されているサーバ上では重要ではありません。 –
しかし、私はアセンブリの参照がどのように機能するかを理解しています。 C:\ Program Filesの問題は、そのパスがCIサーバーに存在しない可能性が高いことです。それで、私はそれを見る方法で、そのアセンブリを私のソリューションの下にあるLibディレクトリにコピーして、ソースコントロールに追加して、ソリューションをビルドするときにCIによって取得されるようにするか、できれば他のNuGetパッケージその中のアセンブリ。 –