HTML Linq avec HtmlAgilityPack, ou une alternative, en PCL

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

Question

J'ai écrit un projet sur .NET 4 et je suis en train de lui permettre de s'exécuter également sur Windows Phone. J'utilise HtmlAgilityPack, une bibliothèque bien connue qui permet les requêtes Linq sur HTML, et n'utilise que les interfaces LoadHtml et Linq qu'elle fournit.

Après avoir converti les bibliothèques de classes de .NET 4 en PCL (bibliothèque de classes portable) avec prise en charge de .NET 4 et WP8, il semble que je ne puisse plus utiliser la bibliothèque HtmlAgilityPack. Existe-t-il un moyen de permettre à HtmlAgilityPack de fonctionner correctement dans un projet PCL ou existe-t-il une alternative variable avec une interface Linq similaire qui fonctionne comme prévu?

EDIT : HtmlAgilityPack fournit 9 versions différentes, dont aucune n'est compatible avec PCL. Aucun d'entre eux ne résout les dépendances à partir des références. Pour certaines versions, cela peut sembler être le cas, mais lors de l’utilisation, une erreur sera générée avec l’habituel problème «ne peut pas charger, dépendances non résolues».

EDIT # 2 Comme il est facile de rater un petit commentaire, je vais mettre à jour cette réponse avec la solution que j'ai proposée. J'ai extrait ce qui était nécessaire pour les fonctionnalités de base et mis en œuvre les composants manquants pour que tout fonctionne correctement. Le résultat est ici https://github.com/Deathspike/HtmlAgilityPack-PCL

Réponse acceptée

Vous avez demandé et répondu à votre propre question - n'est-ce pas?

HtmlAgilityPack ne prend pas en charge l'utilisation avec les bibliothèques de classes portables.

Au mieux, vous devez envisager de porter / migrer les fonctionnalités spécifiques dont vous avez besoin de manière à fonctionner sur les plates-formes que vous utilisez.


Réponse populaire

Une option consiste à porter le code source HTML Agility Pack sur un fichier PCL. Vous pouvez exécuter PCL Compliance Analyzer dessus pour avoir une idée de la difficulté de ce processus.

Vous pouvez également utiliser le modèle d'abstraction. Créez une interface portable pour les fonctionnalités dont vous avez besoin (par exemple, LoadHtml et Linq ), puis implémentez cette interface pour chaque plate-forme en appelant le pack d'agilité HTML. Ensuite, votre code portable peut dépendre de l'implémentation spécifique à la plate-forme.

Pour plus d'informations, consultez l'article suivant: Comment utiliser les bibliothèques de classes portables pour vous




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi