22

私は.NET4でプロジェクトを作成し、現在WindowsPhoneでも実行できるようにしています。HTMLを介したLinqクエリを可能にするよく知られたライブラリであるHtmlAgilityPackを使用しており、それが提供するLoadHtmlおよびLinqインターフェイスのみを使用しています。

クラスライブラリを.NET4から.NET4およびWP8をサポートするPCL(ポータブルクラスライブラリ)に変換したため、HtmlAgilityPackライブラリを使用できなくなったようです。HtmlAgilityPackがPCLプロジェクトで正しく機能するようにする方法はありますか、それとも意図したとおりに機能する同様のLinqインターフェイスを備えた可変の代替手段がありますか?

編集:HtmlAgilityPackは9つの異なるバージョンを提供しますが、いずれもPCLと互換性がありません。それらのどれも参照からの依存関係を解決しません。一部のバージョンでは、そう見える場合がありますが、使用すると、通常の「ロードできない、未解決の依存関係」でエラーがスローされます。

編集#2小さなコメントを見逃しやすいので、私が思いついた解決策でこの答えを更新します。基本的な機能に必要なものを抽出し、不足しているコンポーネントを実装してすべてを機能させました。結果はこちらhttps://github.com/Deathspike/HtmlAgilityPack-PCL

4

3 に答える 3

5

1つのオプションは、HTMLAgilityPackのソースコードをPCLに移植することです。PCLコンプライアンスアナライザーを実行して、これがどれほど難しいかを知ることができます。

または、抽象化パターンを使用します。必要な機能(LoadHtmlおよびLinq)用のポータブルインターフェイスを作成し、HTML Agility Packを呼び出して、プラットフォームごとにそのインターフェイスを実装します。その場合、ポータブルコードはプラットフォーム固有の実装に依存する可能性があります。

詳細については、このブログ投稿を参照してください:ポータブルクラスライブラリを機能させる方法

于 2013-03-12T00:19:58.740 に答える
4

あなたはあなた自身の質問をし、答えました-あなたはそうではありませんか?

HtmlAgilityPackは、ポータブルクラスライブラリでの使用をサポートしていません。

せいぜい、使用しているプラ​​ットフォームで機能する方法で、必要な特定の機能の移植/移行を検討する必要があります。

于 2013-03-11T21:12:57.540 に答える
3

HtmlParserSharpを見てください。これは、 validator.nu HTML5パーサーのC#ポートです。プロジェクトは、多かれ少なかれストレートなC ++ポートであり、C#のパフォーマンスを向上させるためのいくつかの更新を加えた、最も基本的な.NET Frameworkクラスのみを使用するため、PCLライブラリとして非常に簡単に構築できるはずです。

私がHtmlParserSharpで行った作業のほとんどは、CsQueryに対するものでしたが、それ自体はPCLに準拠するまでには長い道のりですが、HtmlParserSharpがそれ自体でリーンHTMLパーサーとして完全に機能しない理由はまったくありません。目的。プロジェクトには、に基づいてDOMを構築する例が含まれていますXmlElementが、ツリービルダーは抽象化されているため、代わりに独自のツリーノードオブジェクトを使用するようにこれを簡単に変更できます。

于 2013-03-12T12:01:18.620 に答える