VSXTool v1.14 24/01/2022 - 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
    Visual Studio 2015          -vs2015
    Visual Studio 2017          -vs2017
    Visual Studio 2019          -vs2019
    Visual Studio 2022          -vs2022

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, or via DTE for Visual Studio 2013 and 2015.

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 in those versions.  However, it can also be used with the full
versions and because it's written in C++ with just the STL and CRT, it is
minimal and fast.

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, njsproj, 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 to sam@humbug.net, 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 ;)