HTML Linq與HtmlAgilityPack,或替代,在PCL中

.net c# html-agility-pack portable-class-library windows-phone-8

我已經在.NET 4上編寫了一個項目,目前我正在允許它在Windows Phone上運行。我正在使用HtmlAgilityPack,一個眾所周知的庫,允許Linq查詢HTML,並且只使用它提供的LoadHtmlLinq接口。

將類庫從.NET 4轉換為支持.NET 4和WP8的PCL(可移植類庫)後,我似乎無法再使用HtmlAgilityPack庫了。 有沒有辦法讓HtmlAgilityPack在PCL項目下正常運行,或者是否有一個類似Linq接口的可變替代方案可以按預期工作?

編輯 :HtmlAgilityPack提供9個不同的版本,其中沒有一個與PCL兼容。它們都沒有解析引用的依賴關係。對於某些版本,它可能看起來確實如此,但在使用時會出現錯誤,通常是“無法加載,未解析的依賴項”。

編輯#2由於很容易錯過一個小評論,我會用我提出的解決方案更新這個答案。我提取了基本功能所需的內容,並實現了缺少的組件以使一切正常。結果在這裡https://github.com/Deathspike/HtmlAgilityPack-PCL

一般承認的答案

你問過並回答了你自己的問題 - 不是嗎?

HtmlAgilityPack不支持與Portable Class Libraries一起使用。

充其量,您需要以適用於您正在使用的平台的方式查看移植/遷移所需的特定功能。


熱門答案

一種選擇是將HTML Agility Pack源代碼移植到PCL。您可以在其上運行PCL Compliance Analyzer ,以了解這將是多麼困難。

或者,使用抽像模式。為您需要的功能(即LoadHtmlLinq )創建一個可移植的界面,然後通過調用HTML Agility Pack為每個平台實現該界面。然後,您的可移植代碼可以依賴於特定於平台的實現。

有關更多信息,請參閱此博客文章: 如何使便攜式類庫為您工作



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow