Montag, 24. August 2015

Abot mit dnx 4.5.1 verwenden

Im Zusammenhang mit dnx 4.5.1 und Abot habe ich heute verschiedene Herausforderungen angetroffen. Nachfolgend sind die wichtigsten Erkenntnisse festgehalten um Abot korrekt zu verwenden.

Richtige Version des HtmlAgilityPack

Das Nuget-Paket von Abot beinhaltet eine eigene Version des HtmlAgilityPack. Will man in seiner Applikation selber noch etwas mit dem HtmlAgilityPack machen, so ist es wichtig, dass die genau gleiche Version des HtmlAgilityPack's referenziert wird wie Abot verwendet.

In meinem Fall ist folgendes der Fall:

  • Abot Version 1.5.0.110
  • HtmlAgilityPack 1.4.7

Die entsprechenden Referenzen müssen im project.json im Abschnitt dependencies festgelegt werden.

Richtige Registrierungsreihenfolge für Dependencies

Genau gleich wie bereits in früheren .NET Versionen hat Abot auch ein Problem, wenn die Dependencies in falscher Reihenfolge registriert werden (siehe http://stackoverflow.com/questions/22671878/add-htmlagility-pack-and-abot-web-crawler-to-project)

Bei mir hat sich das so geäussert, dass ich nach dem Starten meiner Console Applikation nachfolgende Fehlermeldung erhalten habe:

Crawl of http://www.retschgi.com/ completed with error: System.MissingFieldException: Field not found: "HtmlAgilityPack.HtmlDocument.OptionMaxNestedChildNodes".
   At Abot.Poco.CrawledPage.InitializeHtmlAgilityPackDocument()
   At Abot.Poco.CrawledPage.<.ctor>b__0()
   At System.Lazy`1.CreateValue()
   At System.Lazy`1.LazyInitValue()
   At System.Lazy`1.get_Value()
   At Abot.Core.HapHyperLinkParser.GetHrefValues(CrawledPage crawledPage)
   At Abot.Core.HyperLinkParser.GetLinks(CrawledPage crawledPage)
   At Abot.Crawler.WebCrawler.ParsePageLinks(CrawledPage crawledPage)
   At Abot.Crawler.WebCrawler.ProcessPage(PageToCrawl pageToCrawl)

Nachfolgendes Vorgehen hat geholfen:

1. HtmlAgilityPack in project.json registrieren und speichern

{
    ...
    "dependencies": {
        "HtmlAgilityPack": "1.4.7",
    },
    ...
}

2. Abot in project.json registrieren und speichern

{
    ...
    "dependencies": {
        "HtmlAgilityPack": "1.4.7",
        "Abot": "1.5.0.110"
    },
    ...
}
Autor

Reto Gurtner

bambit - Microsoft Partner für Softwareentwicklung in Bern

Sind Sie auf der Suche nach Microsoft .NET Experten?

Angebot ansehen