VS.Net 2002/2003 Open With...the real answer
OK, I did a little regmon-ing, and I'm finally starting to understand the workings of Open With a little better (this stuff has gotten a lot more complicated since I last looked at it). Keep in mind that I'm working in XP here - don't know if the same applies for W2K, I haven't installed VS2003 there yet.
Under HKCR, there are keys for each registered file extension. Each key contains a subkey called OpenWithProgids, and the contents of this key seems to determine what shows up in the Open With list. Each value in in the OpenWithProgids points to another key in HKCU which tells the system how to actually open the file. For example, on my system the OpenWithProgids has a single value in it, called VisualStudio.csfile.7.1. There's a key called HKCR\VisualStudio.csfile.7.1 which points to the VS.Net 2003 executable.
So here's the crux of the problem. It seems that on my machine, the .cs and .csproj keys had only the VS2003 keys (VisualStudio.csfile.7.1 and VisualStudio.csprojfile.7.1) listed in the OpenWithProgids list. It didn't have the old VS2002 keys (csfile and csprojfile). Once I added those to the list, presto, Open With worked as expected. Interestingly, the .aspx, .vb, .sln, etc extensions seemed to be OK - it was only .cs and .csproj (which of course are the ones I use the most) were messed up. At least so far - I probably haven't looked at every extension the VS has registered yet.
I'm not sure if there was some sort of configuration glitch on my machine that caused this, or if it's actually a bug with the install that other people are seeing. If the latter, it's easy to work around. Just save the following into a file with the .reg extension and then run it:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.cs\OpenWithProgids]
"csfile"=""
[HKEY_CLASSES_ROOT\.csproj\OpenWithProgids]
"csprojfile"=""