Hallo,
wie in meinem letzten Posting beschrieben, hat Microsoft mit dem Service Pack 1 endlich wieder einen “richtigen” HelpViewer bereitgestellt.
Das war dann auch der einzige Grund, warum ich das Service Package installiert habe.
Leider scheint mir der neue HelpViewer noch nicht optiomal in Visual Studio eingebunden, weshalb ich hier die Schritte zu einer sinnvollen Konfiguration dokumentieren möchte.
Zunächst muss die Hilfe so konfiguriert werden, dass die “lokale Hilfe” verwendet wird. Bleibt man bei der “Onlinehilfe”, ändert sich am Verhalten nichts, d.h. wenn Hilfe angefordert wird, wird der Browser gestartet und lädt eine mehr oder weniger passende Seite von der msdn-Website.
Um die lokale Hilfe auszuwählen, muss man den “Hilfebibliotheks-Manager” starten, z.B. über den Eintrag “Hilfeeinstellungen verwalten” im Menü Hilfe.
Dann klickt man auf “Onlinehilfe oder lokale Hilfe auswählen” und wählt anschließend “Ich möchte die lokale Hilfe verwenden”.

Lokale Hilfe auswählen
Danach ist man aber noch nicht viel weiter, da (zumindest bei meiner Installation) noch keine lokalen Inhalte für die Hilfe vorliegen. Diese müssen nun durch Klick auf “Inhalt von Online-Speicherort installieren” lokal installiert werden.
Der Hilfebibliotheksmanager lädt dann eine Liste mit abrufbaren Inhalten und zeigt diese in einer baumartigen Sicht an. Dort klickt man nun für jedes gewünschte Paket auf den Link ‘Hinzufügen’.
In folgendem Beispiel wurde als letztes die Hilfe für “Visual C#” ausgewählt:

Auswahl einzelner Hilfepakete
Die Aktualisierung der geschätzten Downloadgröße nach der Aus- oder Abwahl eines Paketes dauert einen Moment. Nach einem Klick auf “Aktualisieren” werden die Hilfeinhalten dann geladen und lokal installiert.
Nach dem der äußerst langsamen Download (ca. 200 KBit/s) wollte ich dann ein Gefühl für die Qualität der Suche bekommen.
Die Eingabe des Suchbegriffes std::vector brachte als Ergebnisse “Implementing an STL based collection”, “checked_array_iterator Class” usw. Kein einziger der zwanzig Treffer hatte etwas mit der gewünschten Klasse, welche eine essentielle Klasse der C++ Standardbibliothek ist, zu tun. Wenig überraschend wurde das Ergebnis nicht besser, wenn man den Namensraum std:: wegläßt. Das ist ein sehr schwaches Ergebnis und disqualifiziert den HelpViewer als direktes Frontend für Suchen in der Hilfe.
Eine weitere wichtige Frage besteht darin, ob der HelpViewer effizient Hilfe für Begriffe aus einem Quelltext anzeigt. Immerhin kennt die IDE den genauen Typ jedes Tokens und hat damit alle Informationen, die benötigt werden, um eine eindeutige und korrekte Hilfe anzuzeigen.
Leider wird diese Hoffnung nicht erfüllt, wie man an diesem kleinen Beispiel sieht:
if (getElements().size() != rhs->getElements().size())
getElements() liefert eine Instantiierung von std::map zurück. Die IDE “weiß” das auch, wie man an dem tooltip für das token ’size’ sieht oder auch den Möglichkeiten, die die “member completion” anbietet.
Der HelpViewer zeigt allerdings die Seite für hash_set::size() an, was nicht korrekt ist. Die Hilfe für Schlüsselwörter, die eindeutig sind (z.B. auto_ptr) wird korrekt angezeigt, was aber auch keine große Leistung ist.
Insgesamt bleibt ein enttäuschender Eindruck. Zumindest für C++-Entwickler die viel mit der C++ Standard-Bibliothek arbeiten, stellt der HelpViewer keine Verbesserung dar.
Viele Grüße,
Andreas
Technorati Tags: Visual Studio 2010, SP1, HelpViewer