*.components, presentation folder project specific

Topics: Project Management Forum
Nov 9, 2010 at 4:16 PM
Edited Nov 9, 2010 at 4:24 PM

Is there a way to get rid of the *.components file and a custom presentation inside the sandcastle application folder? For a project specific plugin I just have to set the  SHFBCOMPONENTROOT variable and rename the dll. But for a project specific component I have to create the components file and adapt it to the specific dll location and a custom presentation I have to copy inside the actual app folder which is a bit awkward for automatization.

Thanks.

Coordinator
Nov 9, 2010 at 5:02 PM
Edited Nov 9, 2010 at 5:05 PM

The purpose of the .components file is to allow SHFB to merge your component configuration at build time.  Without it, you'd have to edit the SHFB templates directly which is not desirable since you'd have to update them with each new release of SHFB and all of your users would too if you make the components public.  You can use various replacement tags in the path in the component configuration file to allow SHFB to find it without hard-coding the path (i.e. {@SHFBFolder} if yout put it in the SHFB folder, {@ComponentsFolder} for the components folder).  For example:

 <component id="Some Custom Component"
  type="CustomComponents.DoStuff"
  assembly="{@ComponentsFolder}MyCustomComponents.dll">
</component>

Likewise for the Sancastle folder.  {@SandcastlePath} can be used in a configuration to indicate the installed Sandcastle path.  The Customizing the Build Process topic contains a full list of the tags and their meaning.

Eric

Nov 9, 2010 at 5:29 PM

There seems to be a bug in the replacement of {@ProjectFolder}. The right path is inserted but the tag  itself is not removed.

Just the replacement that I needed ...

Thanks anyway.

Nov 10, 2010 at 10:55 AM

OK, it does work during the build process. But it doesn't when I try to configure the component. I think the bug has something to do with the dll path being stored two times: in the project file and in the component file.

Coordinator
Nov 11, 2010 at 1:55 AM

If you've modified the component configuration file, you may need to delete the component from the project and re-add it so that it picks up the new configuration.  It won't do it automatically.

Eric