2016-07-04 4 views
5

Wir haben kürzlich eine Reihe von DLLs in unserem Projekt aktualisiert, einschließlich HtmlAgilityPack auf ihre neuesten Versionen. Dies hat bewirkt, dass der folgende Code, der bereits funktioniert hat, Fehler in der ersten Zeile wirft.HTMLAgilityPack QuerySelectorAll werfen Ausnahme, möglicherweise Fizzler DLL-Version nicht übereinstimmen?

List<HtmlNode> foundNodes = document.QuerySelectorAll(".divider").ToList(); 

foreach(HtmlNode node in foundNodes){ 
    doWhatever(node); 
} 

Methode nicht gefunden: 'System.Collections.Generic.IEnumerable`1 HtmlAgilityPack.HtmlNode.Descendants()'.

Die letzte Zeile der Stapelüberwachung ist:

"bei Fizzler.Systems.HtmlAgilityPack.HtmlNodeOps.b__71 (HtmlNode n)"

Die QuerySelectorAll eine IEnumerable von HtmlNode zurückkehrt, jedoch Ich kann nicht mehr in der Lage sein, es auf eine Liste zu übertragen. Ich würde eine Vermutung riskieren, dass es eine verwandte DLL mit einer inkompatiblen Version gibt (fizzler?), Die die Descendants Methode vermisst? Die NuGet page für HtmlAgilityPack zeigt jedoch keine Abhängigkeiten und die fizzler-Version, die ich verwende, ist 1.0.0, was ich für richtig halte.

+0

Haben Sie versucht, "HtmlAgilityPack" und "Fizzler" zu deinstallieren und ihre aktuellen Versionen zu installieren? – Veverke

+0

Ja, ohne Erfolg. Bei genauerer Betrachtung der Ausnahme scheint die 'Fizzler.Systems.HtmlAgilityPack'-DLL aus' C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien 'geladen zu sein und ist eine alte Version, nicht sicher Warum. Ich habe versucht, den Ordner zu löschen und das Projekt neu zu laden, aber irgendwie ist es dasselbe. Wir haben jetzt begonnen, AngleSharp zu verwenden, da die Verwendung sehr ähnlich ist, also war es eine einfache Umstellung. – James

+0

Sie verwenden 'AngleSharp' war meine erste Schätzung (' QuerySelectorAll' ist mir vertraut). Ich schlage vor, das Problem zu reproduzieren: Erstellen Sie eine Konsolenanwendung, installieren Sie die erforderlichen Pakete (neueste Versionen) und geben Sie einen einfachen 'QuerySelectorAll'-Aufruf aus. Passiert es auch dort? Wenn nicht (und wahrscheinlich nicht), können Sie vielleicht auch die 'packages.config' Datei löschen und dann alle relevanten Pakete deinstallieren? (Die Reihenfolge könnte das Gegenteil sein - deinstallieren und löschen Sie die Datei), und versuchen Sie es erneut zu installieren? – Veverke

Antwort

10

Es passiert der gleiche Fehler mit mir, nachdem ich das HtmlAgilityPack nuget-Paket aktualisiert habe.

Ich löste das Downgrade von 1.4.9.4 auf 1.4.9 vorerst.

Lassen Sie uns die nächsten Versionen dieses Pakets sehen.

+0

Hallo Alberto, danke für die Antwort. Leider hatte ich das schon versucht und es hat das Problem für mich nicht gelöst, also werde ich das nicht als die Antwort markieren (aber upvoted) – James

+1

Hast du die Dateien von 1.4.9.4 aus dem Paketordner entfernt? –

1

Ich hatte einen sehr ähnlichen Fehler, und es von 1.4.9.5 auf Version 1.4.9 zurückrollen löste es, nicht ganz sicher, warum aber.

1

Haftungsausschluss: Ich bin der Besitzer des Projekts Html Agility Pack

Die Version 1.5.0 wurde veröffentlicht, und dieses Problem ist in der v1.5.0-beta5 behoben.

Es wurde dadurch verursacht, dass ein Standard-Parameter auf ein Verfahren in der v1.4.9.5

Da die Bibliothek stark benannt ist, finden Fizzler konnte nicht mehr diese Methode aufgenommen.

Verwandte Themen