Visual Studio 2003 and MSDN Documentation

S

SpookyET

I have asked this in microsoft.public.vstudio.general, but that newsgroup
seems to be dead.

Is there a way to make Visual Studio connect to http://msdn.microsoft.com
for documentation as opposed to installing the MSDN Documentation
locally? The advantage of that is not wasting disk space, and the
documentation is always up to date. Right now, I'm doing it manually
through the browser, but it would be cool to be able to integrate it
inside Visual Studio. I'm only interested in the .NET Docs.
 
C

Chad Z. Hower aka Kudzu

S

Sahil Malik

Ok technically - it is possible, but now that I tell you how - you will
realize how much of a pain it will be to set it up, and the even more pain
maintaining it.

So here you go ---on your computer you will find a file called, C:\Program
Files\MSDN\2004JAN\1033\msdn.hxt. (Or something similar). That is basically
an XML file, that any HTML help collection - what MSDN is - would use to
store it's tree.

If you closely observe that tree, the node ids have a URL in them, so for a
tree in
\ComponentDevelopment\Knowledgebase you would have,
<?xml version="1.0" ?>
- <HelpTOC DTDVersion="1.0" PluginStyle="Hierarchical" PluginTitle="MSDN
Library-January 2004">
- <HelpTOCNode Id="2" NodeType="Regular" Title="Component Development"
Url="/dnanchor/html/ComponentDevelopment.htm">
- <HelpTOCNode Id="5" NodeType="Regular" Title="Knowledge Base">
<HelpTOCNode Id="6" NodeType="TOC" Url="enu_kbadobj" />

Or something similar.

Now when you happen to click on any of those trees, you would load URL
which looks like -
ms-help://MS.MSDNQTR.2004JAN.1033/enu_kbadobj/adobj/818518.htm, in other
words, "adobj/818518.htm" comes from a URL called enu_kbadobj, which is
interpreted by your operating system/IE as a ms-help kind of URL, which
guess what .. is represented as two files on your machine viz -

enu_kbadobj.hxi AND
enu_kbadobj.HxS

And look deeper into it, hxi is your index, which is the contents of the
tree (indivdual knowledgebase articles), and xS is the actual html pages.

Now let us take this paradigm to the web based htm msdn library -

and here is where the problems start becoming evident.
Problem #1 - The KB database is at different places in the MSDN library, so
there isn't a direct one to one mapping of structures.

But lets compare this article on our local MSDN, with the online equivalent
MSDN article

<<----- this much comes from your hxt file ------->>/<<---- and this from
within the hxi --->>
ms-help://MS.MSDNQTR.2004JAN.1033/ActiveX/workshop/components/activex/intro.
htm

http://msdn.microsoft.com/workshop/components/activex/intro.asp

WOW .. is the one to one URL mapping a co-incidence??? I think not !!! :)

So for you to have an Online MSDN instead of local MSDN, you would need to
a) Edit your .hxt file, to point to correct URLs - as is in the online
MSDN - and maintain it as MS changes the online structure (boy that could be
a royal pain). (Probelm #2)
b) Write an application that makes ms-help:// registered URL not work as
html help intends it to, but as you need it to (viz. go online, and convert
it to http:// <<similar address>> // this will obviously break anything that
uses html help, so good luck maintaining that. (Probelm #3)
c) And then remember, that context sensitive help will be a whole another
can of worms to deal with .. i.e. when you hit F1, the compiled HTML file
has anchors in it that open it right there and then based on what your
active focus was - hope that works in an online environment. (Probelm #3)

In short, it's not easy to do it :).

But now armed with this knowledge, you could now create your own help
system, that is online, and is hot linked to a windows forms application
that is distributed by your company - NOW THAT WOULD BE AWESOME HUH? I've
actually done that for one of the companies I worked for, and the client
wanted to kiss me after that. (well almost). Remember you would have to
register a new url type (can't use ms-help://), but you could use
malik-help:// .. hehe !! :)

Hope this was helpful dude, it took a long time typing this !!!!!

- Sahil Malik
Independent Consultant
You can reach me thru my blog - http://dotnetjunkies.com/WebLog/sahilmalik/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top