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.
Haben Sie versucht, "HtmlAgilityPack" und "Fizzler" zu deinstallieren und ihre aktuellen Versionen zu installieren? – Veverke
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
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