Unable to build sandcastle help file when using SET SHFBROOT

Topics: Developer Forum, Project Management Forum, User Forum
Dec 2, 2014 at 9:54 PM
I'm building our CHM file as a post-build event. The syntax is as follows:

SET SHFBROOT=$(SolutionDir)....\External\Libraries\Sandcastle
"$(SystemRoot)\microsoft.net\framework\v4.0.30319\msbuild.exe" /p:Configuration=Debug "$(SolutionDir)..\HelpGenerator\HelpGenerator.shfbproj"

When running this, I get the following error.

Error 234 BUILD FAILED: Unable to parse Sandcastle framework definition file: D:\SourceControl\AlaskaAir.com\Quality Engineering\Main\Projects\AlaskaAir.Com\....\External\Libraries\Sandcastle\Frameworks.xml [D:\SourceControl\AlaskaAir.com\Quality Engineering\Main\Projects\HelpGenerator\HelpGenerator.shfbproj] D:\SourceControl\AlaskaAir.com\Quality Engineering\Main\Projects\AlaskaAir.Com\AlaskaAir.Test\SHFB AlaskaAir.Test

Any help would be appreciated
Dec 3, 2014 at 7:57 PM
The error appears to indicate that the content of the file is invalid. Have you checked the reported path to see that it exists and does contain the Frameworks.xml file with the correct content? Does the SHFB build log file report any more details about the error?

Dec 3, 2014 at 10:41 PM
Yup, I've verified the directory and it has the Frameworks.xml. I actually got it to work but I'm not quite satisfied with the work-around. I actually placed all the sandbox toolset folder in the same directory where I have my projects. The modified set variable is now this:

SET SHFBROOT=$(SolutionDir)\Sandcastle

When I had the set variable under a different structure it fails with the above error.
SET SHFBROOT=$(SolutionDir)....\External\Libraries\Sandcastle

This seems to be a bug. I haven't tried using $(Sourcedir) as part of the relative path.
Dec 4, 2014 at 1:52 AM
Just curious, are you putting "...." in the path literally or just shortening it in the message? If literally, that's probably why it doesn't work since I'm pretty sure that's not valid in a path.

Dec 4, 2014 at 7:02 PM
Sorry it was mistype I previously had.

SET SHFBROOT=$(SolutionDir)....\External\Libraries\Sandcastle

This actually worked as it was finding the SandcastleHelpFileBuilder.Targets file and ...utils.dlls. It fails as it can't find the frameworks.xml. Putting the sandcastle tools under the same directory (Solution). I'll leave it as for now and when I get some time, I'll poke back as I prefer to put the binaries to a different source location. Thanks for all the help.
Dec 4, 2014 at 7:20 PM
If you're splitting up the Sandcastle binaries from their supporting files, that won't work. The tools do expect to find things based on the installed folder structure (everything relative to the location of the core assemblies). As long as the entire set move together you should be able to put them where you like.