Debug Visual Studio F1 Help
What can you do if Visual Studio F1 Help is broken or not working? Behind the scenes, Visual Studio maintains a help context that it passes to the help system when you press F1. The help system then displays the topic that best matches your context. A good first step in debugging F1 problems is understanding the information that Visual Studio is passing to the help system.
This post includes instructions for both Visual Studio 2010 and Visual Studio 2012.
Debugging Visual Studio 2012 F1 Help
To see the help context, add the following entry to your registry:
Detailed instructions follow:
- Close Visual Studio.
- Launch the Registry Editor (regedit.exe)
- Navigate to HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\Dynamic Help. By default, the Dynamic Help key has the following string values:
- Right click on the Dynamic Help key and select New | String Value.
- Right click on the default name of the new string and change it to "Display Debug Output in Retail". Ensure that the string type is “REG_SZ”.
- Double-click on the string name you just entered and change the Data field to "YES" and click the OK button.
- Verify that your entry is correct:
- Close the Registry Editor.
- Launch Visual Studio.
- Click on Debug Help Context in the Visual Studio Help menu to launch the Debug Help Context pane.
The Debug Help Context Pane
As you click around inside Visual Studio, you’ll see the properties in the Debug Help Context pane change dynamically. This is the information that is passed to the help system when you press F1.
The importance and meaning of the help context properties deserve a separate blog post. Properties of note include:
- Keywords are added and removed to the help context depending on the location of the cursor in the editor or design surface. When selecting a topic to display, the help system will prefer higher priority keywords over those with lower priority.
- LCID is the human language of the Visual Studio IDE (English, French, etc.). The help system uses it to select the correct content locale.
- TargetFrameworkMoniker is of importance to managed code developers as it specifies the version of the runtime being used.