Issues with F1-Help in C++ Projects
Hi! My name is Ulzii Luvsanbat and I’m a Senior Test Lead with the Visual C++ team. Diego told me about some feedback received in a recent post regarding the accuracy and usefulness of the F1-Help command when working on C++ projects.
First of all, I want to start by thanking all of you guys for your feedback on F1 Help experiences in C++. We really appreciate you taking the time to share your thoughts and we apologize for any issues you’re seeing. We have made lots of improvements in VS2010 around F1 Help specifically for C++ from updating content topics with more specialized tags, improving query content that gets built by the IntelliSense parser, and more. However, C++ has wide spectrum of support in terms of runtimes, target OS, and even languages flavors, which greatly contribute to bugs in the entire F1 Help system. Again, we apologize for missing any bugs.
Now, taking a closer look into some issues that were reported in previous blogs:
- I want to use the example offered by Leo Davidson, who told that he pressed F1 over ::GetMessage() but thus brought a help page on Windows Azure.
::GetMessage() function does have a correct topic in MSDN with the right tags. And you should not have seen the managed interface to Azure. We have verified that it does bring up the right topic for VS2010 RTM and VS2010 SP1 (which was released last week). So what might be happening to you is either one of these 2 cases:
- IntelliSense parser for that source file isn’t working when started F1 Help query. Every time you press F1, we use our C++ IntelliSense parser to fully resolve current token’s full qualified name and its associated header file, target platform, etc before sending the request to MSDN which topic to display. If for any reason, IntelliSense parser isn’t working for that source file (translation unit) then we fall back to just sending that keyword and whatever else we can find out without compiling the source. This will cause keywords/tags collisions in topics across different frameworks or platforms, and what topic will be chosen is undefined.
- Your project is IJW (“it just works” C++ Interop), meaning you’re building that source file with /clr compiler option. One of the hard choices we had to make in VS2010 was not to enable C++/CLI IntelliSense (we plan to correct that in a future release), and therefore the F1 Help will behave like above scenario I mentioned.
- Jalf mentioned similar issues with Direct3D. DirectX topics in MSDN weren’t updated for a while to reflect the C++ language provider changes for F1 Help keyword search heuristics. However, we have been working with the Windows team to make all the required changes in MSDN metadata. They’re almost done with those changes and you should be experiencing improved results soon.
Thanks again for this valuable feedback.