c# - 带有 HtmlAgilityPack 的 HTML Linq,或 P​​CL 中的替代方案

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

我已经在 .NET 4 上编写了一个项目,目前正在让它也能在 Windows Phone 上运行。我正在使用 HtmlAgilityPack,这是一个著名的库,它允许通过 HTML 进行 Linq 查询,并且我只使用它提供的 LoadHtmlLinq 接口(interface)。

将类库从 .NET 4 转换为支持 .NET 4 和 WP8 的 PCL(可移植类库)后,我似乎不能再使用 HtmlAgilityPack 库了。 有没有一种方法可以让 HtmlAgilityPack 在 PCL 项目下正常运行,或者是否有一个具有类似 Linq 界面的可变替代方案可以按预期工作?

编辑:HtmlAgilityPack 提供了 9 个不同的版本,其中没有一个与 PCL 兼容。它们都没有解决引用的依赖关系。对于某些版本,它可能看起来确实如此,但在使用时会抛出一个错误,通常是“无法加载, Unresolved 依赖项”。

EDIT #2 由于很容易错过一个小评论,我将用我想出的解决方案更新这个答案。我提取了基本功能所需的内容并实现了缺失的组件以使一切正常。结果在这里https://github.com/Deathspike/HtmlAgilityPack-PCL

最佳答案

一种选择是将 HTML Agility Pack 源代码移植到 PCL。您可以运行 PCL Compliance Analyzer通过它来了解这将有多难。

或者,使用抽象模式。为您需要的功能(即 LoadHtmlLinq)创建一个可移植接口(interface),然后通过调用 HTML Agility Pack 为每个平台实现该接口(interface)。然后您的可移植代码可以依赖于特定于平台的实现。

有关详细信息,请参阅此博客文章:How to Make Portable Class Libraries Work for You

关于c# - 带有 HtmlAgilityPack 的 HTML Linq,或 P​​CL 中的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341774/

相关文章:

c# - 将算法从 C# 转换为 VB.NET 失败

c# - 不正确的语法 ASP.NET

.net - Tokbox 错误 ListDictionaryInternal thows 消息 "Error with request submission"

.net - 拖放以获取文件路径

windows-phone-8 - AdMob Interstitial Cocos2d-x WP8

c# - 在 Yammer 中自动获取组 ID

javascript - 通过 ajax 将 LIst<t> 发送到复杂模型

c# - 如何为日期和一些自定义掩码制作文本框掩码

c# - XmlSerializer - 将 xml 文件迁移到新版本的最佳方式

windows-phone-7 - 是否可以查看有多少人在 Windows Phone 上卸载了我的应用程序?