New Features in Microsoft Help Viewer 2.0 Beta

UPDATE: This post describes features introduced in Microsoft Help Viewer 2.0 Beta.  Introducing Microsoft Help Viewer 2.0 provides an overview of the final, released product.

Visual Studio 11 Beta is out and, with it, the release of Microsoft Help Viewer 2.0 Beta. Get started by downloading the bits at:

The Help Viewer team’s been busy since I blogged about new features in the Developer Preview. In this post, I’ll cover new features we’ve added in the Beta release:

  • TOC Filter
  • Keyword Index: “Begins With” vs. “Contains”
  • Docking Windows
  • Color Themes
  • Search Filter UI
  • Improved Performance

Setup and Configuration

If you’re performing a clean install of Visual Studio Professional, Premium or Ultimate, you’ll be offered the chance to download local Help content at Visual Studio first run or when you first set your Help Preference to “Use Local Help.”

clip_image001

Installing content during first run is a convenience, not a necessity. You can download and install local Help content from within the Help Viewer at any time.

Online Help is the Visual Studio default as it was in Visual Studio 2010. If you’re doing a clean install of Visual Studio and you want to use the Help Viewer, you’ll need to set your Help Preference to “Use Local Help” From the Visual Studio Help menu.

clip_image002

Table of Contents (TOC) Filter

The TOC Filter displays all topics with titles that contain an input filter string. But instead of displaying the results in a flat list, topics are presented in a sparse tree with their relative relationships intact. This view of the TOC can help you discover topics that are distributed across the TOC and clusters of content that represent in-depth treatment. The filtered view of the TOC can also help developers better understand how our reference content is organized.

For example, if I filter on ‘system.xml’, I can see topics in the .NET framework documentation where I expect to see them. But there’s a cluster of documentation in the Visual Studio debugging content that discusses troubleshooting exceptions. It would have been time-consuming to build this mental model of related content through Search queries alone.

tocFilter

To keep the list compact and manageable, we collapse empty TOC levels with an ellipsis (…). Placing your cursor over an ellipsis reveals the path to a topic or topic group.

If it takes a long time to construct the filter view (as it does in the above example), we display a banner message: “This filter may take a long time. You can change the filter or use search instead.” You can cancel the filter, switch to the search pane or just wait for the filter action to complete.

Keyword Index: “Begins With” vs. “Contains”

The keyword index now functions in either of two modes: “Begins With” or “Contains.” In “Begins With” mode, the keyword index displays items that begin with a given input string. This is the traditional behavior of the index control. When the keyword index is in “Contains” mode, it depicts items that contain the input string. To toggle between modes, click on the filter icon or press Ctrl + K.

Let’s look at how the same ‘sql’ filter string offers a different result list in these two modes:

Begins With Contains
clip_image005 clip_image006

Docking Windows

Docking windows were present in the earlier Developer Preview but they were still a work-in-progress. By supporting this capability, Help Viewer provides greater consistency with the Visual Studio IDE and it addresses a set of scenarios that might otherwise have required additional Viewer Options. (If you’re unfamiliar with Visual Studio docking windows, you may want to learn How To: Arrange and Dock Windows.)

While the possible configurations are nearly endless, some scenarios in which this feature can be helpful:

Example 1: Navigation panel docked on the right side of the content pane. This common configuration was a Viewer Option in Help Viewer 1.1.

example1

Example 2: Navigation panel docked above the content pane. This configuration minimizes horizontal real estate which can be helpful when developing on a single display, for example, a laptop.

example2

Example 3: Search pane docked in content window. This configuration is nice if you want to have more area to display search results.

example3

You can also display topics side-by-side or drag topics outside of the main Help Viewer window. As you’d expect, your docking customizations persist across Help Viewer sessions.

Finally, if you want to restore the Help Viewer to “factory settings,” open the Viewer Options dialog (Ctrl + O) and “Reset Window Layout” by selecting the ‘Reset’ button.

Color Themes

Visual Studio 11 Beta introduces a new visual design and user interface. As a companion app to the IDE, Help Viewer 2.0 Beta provides the same visual design and color themes.

You select your Visual Studio color theme in the Options window of the IDE.

themeOptions

The next time you launch the Help Viewer, it will honor your Visual Studio color theme. Currently there are two theme options: Light and Dark.

Help Viewer Light Theme Help Viewer Dark Theme
hvlight hvdark

NOTE: We’re currently receiving a flood of strong feedback on the user interface changes and it’s likely we’ll make revisions in response to that feedback. Whatever changes are made in the IDE will be reflected in the Help Viewer. If you’d like to weigh in on the new user interface, the best place to be heard is on our Visual Studio UserVoice site or on Visual Studio Connect.

Search Filter UI

We now have UI support for the search filters I described in my post on the Developer Preview. When entering a string into the search box, you’ll see a list of your last three searches followed by filter options. The filter options enable you to discover the available filters and add them to your search query. For example, clicking on ‘title:’ automatically appends it to the search string.

clip_image019

Improved Performance

Performance is a key focus of Visual Studio 11 and that extends to the Help Viewer. Help Viewer 2.0 is faster than Help Viewer 1.1 in all of our performance benchmark tests.

Our biggest gains come in moving from an HTTP API to a COM API (with a managed wrapper for .NET programmers).  We no longer pay the HTTP network cost before retrieving data. (And you no longer have the Help Library Agent sitting in your taskbar.) Because the Help API is a core component of Windows 8, we had encouragement from our friends in the Windows team to optimize both our performance and memory footprint.

Other improvements include:

  • F1 Help – We revised viewer code to reduce UI blocking tasks and to optimize for fast startup by delay- or background-loading of nonessential data with the goal of delivering as fast an F1 response as possible. If you haven’t tried F1 help in a while, I encourage you to give it a look.
  • Search Index – Index functions have been parallelized using the .NET Parallel Constructs which speed index functions on multi-core machines. We’ve made a number of non-specific tweaks to fine tune performance including denormalizing data to reduce the number of index lookups per query. Finally, several caches are created at index creation time to improve search times.
  • Rendering – The content rendering system has been rebuilt from the ground up to be more extensible, flexible, and secure. By moving the rendering and branding into C# code (reducing the need for JavaScript and complex XSLT transforms) we have significantly reduced rendering time.
  • Table of Contents (TOC) – We modified the TOC API code to reduce the number of calls necessary to determine if a TOC topic has children or not. We also cache the results of TOC filter operation to increase the speed of repeatedly used filters. Note that the filter cache is reset on any ‘Manage Content’ operation.
  • Content Download – We optimized our use of BITS to improved content download times. In addition, content merge time have been reduced by over 50%.

…and much, much more

We’ve made numerous fit and finish improvements throughout the Help Viewer, for example, in the area of keyboard support. I’ve already blogged about some of the other significant improvements so if you’re interested in the following features, please read my earlier post on new features in the Developer Preview:

  • Simpler setup and configuration
  • Integrated content management
  • Search filters
  • New help runtime (no more Help Library Agent!)

Finally, we’ve added improved support for content management in enterprise and behind-the-firewall scenarios. I’ll save the details of those features for a future blog post.

To provide feedback on these new features in Help Viewer 2.0 Beta:

  1. Leave a comment at the bottom of this blog post
  2. Send us an email at hlpfdbk@microsoft.com, or
  3. Share your thoughts on the Developer Documentation and Help System Forum
This entry was posted in Microsoft Help Viewer, Visual Studio 2012 and tagged , . Bookmark the permalink. Both comments and trackbacks are currently closed.

11 Comments

  1. Posted February 29, 2012 at 5:34 pm | Permalink

    Other than the flat, lifeless style and the (lack of) color scheme – which I know have been forced on you – the rest of this looks good. I have downloaded the Beta and have just started to play around with it. But it looks like most of the help content isn’t available for local download in the Beta? The only options for content packages to download are “Desktop App Development”, “Metro style App Development”, “Windows Debugging”, and “Windows Driver Development.” After downloading the first two, searching for System.IO.Stream does not return the Stream class. It does return the System.IO namespace; but when I click on Stream on that page, I get “cannot find requested topic on your computer”. Will the full documentation be made available for local download soon?

    • Jeff Braaten
      Posted February 29, 2012 at 10:36 pm | Permalink

      Downloadable content went live today at around 7:00 PM PST (after your comment was submitted). Please give it another try, David.

      • Posted March 1, 2012 at 8:46 am | Permalink

        I was able to download the help content. A couple of other comments:

        1) The icon used in Visual Studio for “Add and Remove Local Help Content” is the same icon that is used in the Help Viewer for “Viewer Options”. That was confusing while I was looking in the Help Viewer for a way to add content.

        2) After a minute I realized that there is no toolbar button in Help Viewer for managing content because the Manage Content tab is apparently open all the time, and there is no way to close it. I don’t think that’s a good idea; managing content is something that I will do very rarely, and the rest of the time that tab is just in the way.

        • Jeff Braaten
          Posted March 1, 2012 at 10:49 am | Permalink

          Thanks for the feedback. I’ve passed it along to the engineering and user experience teams.

  2. Ivan
    Posted March 1, 2012 at 2:48 pm | Permalink

    Good grief, you weren’t kidding about the improved performance, were you? The contents pane now expands almost instantaneously, topics come up immediately and even sync to contents feels faster than the old Document Explorer. Okay, I’m using local help off a SSD drive, but I was doing that with 1.0 and dexplore as well, and this is just so much smoother. I was expecting incremental improvements, but this blew my socks off. Huge and heartfelt congratulations to the team.

  3. Posted March 3, 2012 at 5:17 pm | Permalink

    The new help viewer is really nice and fast, most of the issues that existed in the VS2010 help viewer have been fixed, which is great… but there is still no way to filter the displayed members for a class 🙁

    Am I the only one who thinks this is a major issue? For instance, when you’re viewing the help topic for a WPF control, there are HUNDREDS of members (e.g. more than 300 for the Button class), most of which are inherited. If we can’t filter out the inherited members, it makes the member list almost unusable: it takes ages just to scroll through it! In the old Document Explorer (VS2005/2008), there was a filter at the top of each topic to hide or show the inherited and protected members. Please, please put it back!

    • Jeff Braaten
      Posted March 7, 2012 at 8:30 am | Permalink

      Thanks for this feature suggestion underscoring your earlier comment. The team is investigating the feasibility of implementing this feature in the content itself. Incorporating behaviors (like this one) into content enables us to tune a capability in the online MSDN Library and to deliver it through downloadable content updates without requiring a servicing release of the Help Viewer.

    • Jeff Braaten
      Posted March 29, 2012 at 9:53 am | Permalink

      We’ve just released an update to the .NET Framework 4.5 documentation that provides Inherited and Protected member filtering. Let us know what you think about this implementation.

      • Posted March 30, 2012 at 12:49 am | Permalink

        Thanks for the update, the new member filter greatly improves the usability of the documentation. This new version is probably the best since the early days of Visual Studio .NET : fast, good looking and easy to use. Congrats to the team !

  4. HeatlessssunHe
    Posted March 14, 2012 at 6:12 pm | Permalink

    Anyone having issues with the Help Viewer 2.0 crashing on startup with Visual Studio 11 on the Windows 8 CP?

    • Jeff Braaten
      Posted March 15, 2012 at 11:18 pm | Permalink

      I’m not aware of this issue but we take crash reports very seriously. Please consider submitting a Connect bug with a screenshot of the crash, repro steps, machine details, user account details and any Help Viewer event log entries. Connect bugs are routed directly to our engineering team’s daily triage. The only other thing I’d mention is that we’re keeping a close eye on Help Viewer operations that require elevation of privileges as these scenarios can be tricky.

%d bloggers like this: