VSXTool v1.4 10/05/2014 - Sam Izzo
==================================

Download VSXTool

Quick start
-----------

To set up "open in workspace" functionality:

    1.  In Visual Studio, go to Tools->External Tools.
    2.  Add a new tool.
    3.  Give it a name (e.g. Open in workspace).
    4.  Enter the path to vsxtool.exe.
    5.  Enter the following in the arguments field:
            -solution:$(SolutionDir)$(SolutionFileName) -openfile <vs version argument>
        where <vs version argument> is replaced with the appropriate argument
        from the table of supported versions below.
    6.  Click ok.

To set up "header flip" functionality:

    1.  In Visual Studio, go to Tools->External Tools.
    2.  Add a new tool.
    3.  Give it a name (e.g. Header flip).
    4.  Enter the path to vsxtool.exe.
    5.  Enter the following in the arguments field:
            -solution:$(SolutionDir)$(SolutionFileName) -headerflip:$(ItemPath) <vs version argument>
        where <vs version argument> is replaced with the appropriate argument
        from the table of supported versions below.
    6.  Click ok.

You can then set up shortcut keys in Tools->Options->Environment->Keyboard.
Use the "Tools.ExternalCommand" commands.

Supported versions
------------------

    Version                     Command-line argument
    -------                     ---------------------
    Visual C++ Express 2005     -vcpp2005x
    Visual C# Express 2005      -vcs2005x
    Visual Studio 2005          -vs2005

    Visual C++ Express 2008     -vcpp2008x
    Visual C# Express 2008      -vcs2008x
    Visual Studio 2008          -vs2008

    Visual C++ Express 2010     -vcpp2010x
    Visual C# Express 2010      -vcs2010x
    Visual Studio 2010          -vs2010

    Visual Studio Express 2012  -vs2012x
    Visual Studio 2012          -vs2012

    Visual Studio 2013          -vs2013

Notes
-----

VSXTool is a tool which provides "header flip" (flipping between .cpp/.c and
.hpp/.h files) and "open in workspace" functionality to Microsoft Visual
Studio.  It runs as a Visual Studio "external tool" and communicates with VS
via the Windows DDE mechanism.  It was originally conceived for use with the
Express editions of Visual Studio, which don't allow any add-in functionality,
thus the slightly arcane method of communication.  However, it can also be
used with the full versions.

The "open in workspace" feature requires a solution file to be specified,
but "header flip" can be used when there is no solution.  "Header flip" will
first attempt to flip to a file in the current directory.  If that file
doesn't exist and a solution file was specified, it will search the solution
for the file.

"Header flip" will also flip between .xaml and .xaml.cs files.

VSXTool writes out a file in the same directory as the solution with the same
name as the solution and a .vtcache extension.  This file is a cache of the
solution and project files.  This is used so that VSXTool doesn't have to
parse the project files each time it runs.  It will re-parse them if they
change (so if you add a new file and it isn't showing up, make sure you have
saved your solution/project).  If this file is deleted it will be regenerated
the next time VSXTool is run.


Limitations
-----------

VSXTool parses vcproj, vcxproj, csproj, unityproj, and sln files from the
various supported versions of Visual Studio.  Most file types should show up,
but there may be some rare types that are missing.  If you notice missing
files please report it via email (see README.txt), and if possible send example
solution and project files that reproduce the bug.  There may be some features
of project and solution files that I am not currently handling correctly.
Feel free to send examples that don't work correctly.

It is possible to use Visual Studio macros in project files (for example,
$(ConfigurationName)).  Unfortunately VSXTool is unable to expand these
macros as (as far as I know) they cannot be accessed in the external tools
window.

If you'd like to know about new versions, or have any bugs or other
suggestions, please send email to the address in the README.txt.


TODO
----

Some features planned for the future are:

    * Ability to specify additional sln/project files to parse.
    * Ability to specify arbitrary paths for extra files to list.
    * Expansion of environment variables (but not VS macros) in filenames.
    * Resizeable window ;)