HTML Linq mit HtmlAgilityPack oder alternativ in PCL

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

Frage

Ich habe ein Projekt über .NET 4 geschrieben und bin gerade dabei, es auf Windows Phone laufen zu lassen. Ich verwende HtmlAgilityPack, eine wohlbekannte Bibliothek, die Linq-Abfragen über HTML ermöglicht und nur die von ihr bereitgestellten LoadHtml- und Linq- Schnittstellen verwendet.

Nachdem ich die Klassenbibliotheken von .NET 4 nach PCL (Portable Class Library) mit Unterstützung für .NET 4 und WP8 konvertiert habe, kann ich die HtmlAgilityPack-Bibliothek anscheinend nicht mehr verwenden. Gibt es eine Möglichkeit, HtmlAgilityPack ordnungsgemäß in einem PCL-Projekt zu funktionieren, oder gibt es eine variable Alternative mit einer ähnlichen Linq-Schnittstelle, die wie vorgesehen funktioniert?

EDIT: HtmlAgilityPack bietet 9 verschiedene Versionen, von denen keine mit PCL kompatibel sind. Keine von ihnen löst Abhängigkeiten von den Referenzen. Bei einigen Versionen scheint es so zu sein, aber bei der Verwendung wird ein Fehler mit den üblichen 'nicht ladbaren, nicht aufgelösten Abhängigkeiten' ausgelöst.

EDIT # 2 Da es leicht ist, einen kleinen Kommentar zu verpassen, werde ich diese Antwort mit der Lösung aktualisieren, die ich gefunden habe. Ich extrahierte, was für grundlegende Funktionalität benötigt wurde und implementierte die fehlenden Komponenten, um alles zum Laufen zu bringen. Das Ergebnis ist hier https://github.com/Deathspike/HtmlAgilityPack-PCL

Akzeptierte Antwort

Sie haben Ihre eigene Frage gestellt und beantwortet - nicht wahr?

Das HtmlAgilityPack unterstützt keine Verwendung mit Portable Class Libraries.

Im besten Fall müssen Sie sich die Portierung / Migration der von Ihnen benötigten spezifischen Funktionen so ansehen, dass sie auf den von Ihnen verwendeten Plattformen funktionieren.


Beliebte Antwort

Eine Möglichkeit besteht darin, den HTML Agility Pack-Quellcode an eine PCL zu portieren. Sie können den PCL Compliance Analyzer darüber laufen lassen, um eine Vorstellung davon zu bekommen, wie schwer das sein wird.

Alternativ verwenden Sie das Abstraktionsmuster. Erstellen Sie eine portable Schnittstelle für die von Ihnen benötigten Funktionen (z. B. LoadHtml und Linq ), und implementieren Sie dann diese Schnittstelle für jede Plattform, indem Sie das HTML Agility Pack aufrufen. Dann kann Ihr tragbarer Code von der plattformspezifischen Implementierung abhängen.

Weitere Informationen finden Sie in diesem Blogpost: Wie Sie Portable Class Libraries für Sie arbeiten lassen



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum