VS2010 Integration: WildCard Assembly Reference Generates incorrect path

Topics: Developer Forum
Nov 5, 2011 at 11:15 PM
Edited Nov 6, 2011 at 12:11 AM

(Issue Created)

When you add a wild-card reference path of

C:\proj\source\dev\v1.90\dev\bin\debug in my project it translates to

..\..\..\proj\source\dev\v1.90\dev\bin\debug

 This leads to the follwing error:

System.IO.DirectoryNotFoundException: Could not find a part of the path "C:\proj\Source\Dev\V1.90\XPJustice\Source\Dev\V1.90\Dev\bin\debug\".

It looks like the path is calculated incorrectly somewhere.  This seems like a pretty straightforward fix, so I got the source, and was unable to understand exactly how to build everything (is there a post somewhere that explains building and debugging?)

 This path should have been ..\..\bin\debug.

John

 

Coordinator
Nov 8, 2011 at 12:04 AM

Hi John,

SandcastleBuilder.sln is the main solution file.  It contains all of the other core SHFB projects except the VS 2010 add-in projects.  I'm not going to cover them since you need some experience with VS2010 add-in or package development to understand the stuff that they do.  On a similar note, if you want to dig into the source code for the core Sandcastle tools themselves (BuildAssembler, MRefBuilder, etc.), you'll have to figure out how to build those projects for yourself too since I only have a passing familiarity with them.  If you find bugs in the core Sandcastle tools unrelated to the build components supplied by SHFB, you'll need to report those in the Sandcastle project since I don't maintain or fix bugs in the executables beyond what I can fix via the XSL transformations and other supporting files.

SandcastleBuilderGUI - This is the main project for the standalone GUI and is typically the one to use if you want to do anything with the GUI, the build engine, or the plug-ins.

SandcastleBuilderUtils - This contains the build engine and all other SHFB project-related classes.

ColorizerLibrary - This is the code-colorizer used to colorize the <code> element content.

SandcastleBuilderPlugIns - This contains all of the plug-ins for the SHFB build engine.

SandcastleComponents - This contains the additional build components used with the Sandcastle BuildAssembler tool.

SandcastleMRefBuilder - This contains a component for the Sandcastle MRefBuilder tool that lets it redirect assembly references from one version to another.

GenerateInheritedDocs, SandcastleHtmlExtract - These are tools ran during the build to generate inherited documentation and extract HTML info for the Help 1 build respectively.

HelpLibraryManagerLauncher - This is used to interact with the VS2010 help library manager to install and remove MS Help Viewer content.

Before you do anything, you'll need to modify the system environment variable SHFBROOT to point at the debug folder for the standalone GUI which is where everything ends up (C:\CP\TFS01\SHFB\Main\Source\SandcastleBuilderGUI\bin\Debug).  Once you do that, debugging the GUI, build engine, or plug-ins is just a matter of running SandcastleBuilderGUI and setting breakpoints where you want to stop (i.e. the Execute() method in a plug-in).

For the BuildAssembler and MRefBuilder components supplied with SHFB, you'll need to make their respective project the startup project and set the debugging project options to run the respective tool in order to debug them.  They'll need to be ran from a working build folder that has all of the temporary files they need.  Running a build with the CleanIntermediates property set to false is enough to get a working folder that can be used.  The same approach can be used for the inherited docs and HTML extract tools.  The Help Library Manager can also be ran as a startup project.  You just need to pass it the command line parameters it needs to find the setup file etc. in the debugging project properties.

Eric