Visual Studio User Settings: Window Layouts

It has been suggested that people would like to further understand some of the behind
the scenes concepts of how the VS IDE works when it comes to user settings. 
Like testing, this blog thread could last a while so I’m taking it in small chunks.
Needless to say we currently use a fun mixture of registry settings, user “readable”
xml files, and binary preference files.  This makes the creation of a tool or
command that makes all your settings really difficult.  It’s something that I’d
eventually love to build into the VSTweak
Powertoy
. Today I’ll cover how we store window management settings for the IDE
in Visual Studio 2002 and 2003.  

In %Program Files%\Microsoft Visual Studio .NET 2003\Common7\IDE you will find a file
named devenv.xml.  This file was put down on the install of VS and contains all
of the information for the default window layouts.  When Visual Studio is run
for the first time this file is copied to the user settings location for VS in the
“Application Data” directory under \microsoft\visualstudio\7.1.  From this point
on your layout changes are saved here on shutdown. 

There are different named window layouts stored within the devenv.xml file. 
By default VS associates these with a mode such as debugging.  Notice that starting
the IDE for the first time does not yield any debug windows.  Debug into an application
and you the debug windows will become active since you entered debug mode and the
debug layout is applied.  Through the extensibility model you can store and switch
to any number of window layouts.

The VSWindowManager
Powertoy
serves as a good example of how one can take advantage of the window
management extensibility.   This tool allows you to both auto-switch to
different layouts when you go from coding to form designing and also will let you
save and switch to your own window layouts on the fly.  If you check out that
project you’ll find some great sample source code you could take advantage of for
your own tweaks.

The devenv.xml file in the application data directory is portable and can be moved
from machine to machine if you would like to take your window layouts with you. 
The file in this location can also be deleted if you run into problems with your window
layouts.  Deleting this file has been known to solve the following issues: 

• Can’t open debug windows anymore when debugging. 

• A black blank window that you can’t get rid of.

• Windows refuse to hide or un-autohide when rolled over.

One down lots more settings to go. :-)

Enjoy,

josh