Below is a list of future enhancements and features for the Sandcastle tools and the Sandcastle Help File Builder. No planned release dates have been set for these items. Each item may be implemented all at once or a little at a time depending on its scope and complexity. If you'd like to comment on any of these, please do so on the related work item page (see the links below) or, to make additional suggestions, please start a new discussion
- Investigate the possibility of having BuildAssembler build topics in parallel. That would require that all build components in the stack are thread-safe though. Possible changes and issues:
- Add a configuration property to enable parallel builds but default to the current synchronous build behavior.
- All build components would need an overriden virtual property to indicate if they support parallel execution. The default if not overridden would be false. Each build component and syntax generator would need checking to make sure it is thread-safe. For components that contain nested components, they would need to check each nested component too.
- Concurrent updates to static members. Use thread-safe constructs where needed.
- Use of non-thread-safe objects like the code colorizer. Wrap them in ThreadLocal<T>?
- Copying of content files. Track source and destination files to copy in thread-safe constructs. Then, when the component is disposed of, copy the content.
- Remove the remaining branding stuff from the VS2010 style and SHFB. Branding support seemed like a good idea but with the changes in HV2, that is not the case and it has proven to be more trouble than it was worth. Sandcastle output requires some level of self-branding as non-self-branded content would not be able to use any custom scripts and stylesheets used for things like code colorization or other such features added by custom build components that rely on them. Supporting alternate branding packages doesn't seem to make sense as that's what presentation styles are for. In short, it makes better sense to treat all Sandcastle presentation styles as self-branded and remove the use of branding packages. http://shfb.codeplex.com/workitem/33225
- Investigate whether or not a folder name can safely be introduced into the GUID and hashed member name naming methods to reduce the number of files in the root HTML output folder. http://shfb.codeplex.com/workitem/33058
- Create an Open XML presentation style with any related build components that outputs the help as an Open XML document. The resulting output document should be readily convertible to other formats such as PDF without having to add additional presentation styles or conversion tools to Sandcastle. http://shfb.codeplex.com/workitem/33226
- Perhaps update the tools to enable them to run as MSBuild tasks. Also, there are a lot of obsolete files that should be removed (i.e. Microsoft-specific configuration files that serve no apparent useful purpose). If possible, update the Sandcastle tools and build scripts to utilize a modified version of the presentation style definition file. http://shfb.codeplex.com/workitem/33373
Sandcastle Help File Builder
- Update MRefBuilder to support the Visibility options from SHFB directly. This would be more efficient as the unwanted members could be stripped during the reflection phase rather than after the fact which requires loading the reflection data XML file. http://shfb.codeplex.com/workitem/33231
- Add a transformation to match the SHFB hashed member naming option method. That would get rid of the need to load the reflection file in SHFB after applying the doc model transformation. http://shfb.codeplex.com/workitem/33233