SandcastleBuilder.Utils This class is used to convert conceptual content settings in version 1.7.0.0 and prior SHFB project files to the new MSBuild format. Constructor The project converter object This is used to convert the conceptual content from the old project into the format required by the new project. This converts the token entries to a token file and adds it to the project. This adds all image files to the project This converts the topic entries to a content file and adds it to the project. Convert a conceptual content topic and all of its children The XML reader containing the topics The XML writer to which they are written The project to which the files are added Convert a conceptual topic to the new format The source file The destination file The topic ID The revision number This class represents all of the properties that make up a Sandcastle Help File Builder project. This interface defines the properties used to obtain a base path for a object. This read-only property returns the base path The default configuration The default platform This raises the event. The event arguments This raises the event. The event arguments This will also mark the project as dirty This raises the event. The event arguments This raises the event. The event arguments This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. This is used to reset the property to its default value. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. This is used to reset the property to its default value. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a collection and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a dictionary and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a dictionary and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a collection and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a collection and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a design-time only property. This is used to initialize the local property info and property descriptor caches. This is handled to mark the project as dirty when the list of documentation sources changes. The sender of the event The event parameters This is handled to mark the project as dirty when the various collection properties are modified. The sender of the event The event parameters This is used to ensure that the project is editable before a sub-property on a project path property object is changed. The sender of the event The event arguments This is used to ensure that path properties are written to the project when one of their sub-properties is edited. The sender of the event The event arguments Replace a \xNN value in the copyright text with its actual character. The match that was found The string to use as the replacement This is used to load the properties from the project file This is used to set the named property to the specified value using Reflection. The name of the property to set The value to which it is set The parsed object value to which the property was set. Property name matching is case insensitive as are the values. This is used to allow setting of simple project properties (non-collection) from the MSBuild project file. Unknown properties are ignored. This is thrown if the name parameter is null or an empty string. This is thrown if an error occurs while trying to set the named property. Set the value of an MSBuild project property that matches a property on this class by name. Name of property Value of property This is thrown if the property name is null, an empty string, or is not a recognized property name. Get a collection containing all user-defined properties A collection containing all properties determined not to be help file builder project properties, MSBuild build engine related properties, or environment variables. This is used to determine whether or not the given name can be used for a user-defined project property. The name to check True if it can be used, false if it cannot be used Constructor There are five overloads for the constructor Load a Sandcastle Builder project from the given filename. The filename to load Specify true if the file must exist or false if a new project should be created if the file does not exist. This is thrown if a filename is not specified or if it does not exist and mustExist is true. This is used to create a Sandcastle Builder project from an existing MSBuild project instance. The existing project instance True to load final values (i.e. for build) or false to load design-time values. It is assumed that the project has been loaded, the property values are current, and, if using final values, that the configuration and platform have been set in the MSBuild project global properties. This is used to clone an existing project in order to build it without affecting the existing project's properties. The project to clone True to load final values (i.e. for build) or false to load design-time values. This is used to perform partial builds where we may want to use alternate property values. This is used to mark the project as dirty and in need of being saved. This event is raised to let interested parties know that the project's dirty state has been changed. This is used to determine the default build action for a file based on its extension. The filename to use The build action based on the extension Add a new folder build item to the project The folder name The new . If the folder does not exist in the project, it is added and created if not already there. If the folder is already part of the project, the existing item is returned. This is thrown if the path matches the project root path or is not below it. Add a new file build item to the project The source filename The optional destination path. If empty, null, or it does not start with the project folder, the file is copied to the root folder of the project. The new . If the file does not exist in the project, it is copied to the destination path or project folder if not already there. The default build action is determined based on the filename's extension. If the file is already part of the project, the existing item is returned. This is used to locate a file by name in the project The fully qualified file path to find The file item if found or null if not found This is used to ensure that all local collection project properties have been stored in the MSBuild project file and that path-type properties are current based on the current project location. True to force an update of all affected properties or false to only update those that need it. This only affects the property-based collection properties and path-type properties. Simple types and item group element properties are stored when modified. This is used to save the project file The filename for the project This returns true if the project contains items using the given build action. The build action for which to check True if at least one item has the given build action or false if there are no items with the given build action. This read-only property is used to get the underlying MSBuild project. This read-only property is used to get whether or not the project is using final values for the project properties. If true, final values (i.e. evaluated values used at build time) are being returned by the properties in this instance. This read-only property is used to get the filename for the project This is used to get or set the configuration to use when building the project. This value is used for project documentation sources and project references so that the correct items are used from them. This is used to get or set the platform to use when building the project. This value is used for project documentation sources and project references so that the correct items are used from them. This is used to get or set the MSBuild OutDir property value that is defined when using Team Build. This value is used for project documentation sources and project references so that the correct items are used from them. This is used to get the dirty state of the project This is used to get a collection of reference dependencies (files, GAC, COM, or project) for MRefBuilder if needed. Returns the list of documentation sources to use in building the help file. This read-only property is used to get the build log file location. If is set, it returns its value. If not set, it returns the full path created by using the property value and a filename of LastBuild.log. This is used to get the copyright notice that appears in the footer of each page with any hex value place holders replaced with their actual character. This read-only helper property returns the flags to use when looking for missing tags. This read-only helper property returns the flags used to indicate which optional items to document. This returns a collection of all build items in the project that represent folders and files. This collection is generated each time the property is used. As such, cache a copy if you need to use it repeatedly. Returns the list of namespace summaries This is used to set or get the project summary comments These notes will appear in the root namespaces page if entered. This is used to set or get the path to the HTML 1.x help compiler (HHC.EXE). You only need to set this if the builder cannot determine the path for itself. This is used to set or get the path to the HTML 2.x help compiler (HXCOMP.EXE). You only need to set this if the builder cannot determine the path for itself. This is used to set or get the path to which the help files will be generated. The default is to create it in a folder called Help in the same folder as the project file.

Warning: If building a web site, the output folder's prior content will be erased without warning prior to copying the new web site content to it!

This is used to set or get the path to the Sandcastle components You only need to set this if the builder cannot determine the path for itself.
This is used to set or get the path to the working folder used during the build process to store the intermediate files. This can be used to perform the build in a different location with a shorter path if you encounter errors due to long file path names. If not specified, it defaults to a folder called .\Working under the folder specified by the property.

Warning: All files and folders in the path specified in this property will be erased without warning when the build starts.

This is used to set or get whether intermediate files are deleted after a successful build. The default value is true.
This is used to set or get whether or not the log file is retained after a successful build. The default value is true. This is used to set or get the path and filename of the build log file. If not specified, a default name of LastBuild.log is used and the file is saved in the path identified in the property. This is used to set or get the help file format generated by the build process. The default is to produce an HTML Help 1.x format file built using HHC.exe. If building a web site, the output folder will be cleared before the new content is copied to it. This is used to set or get whether to fix-up the XML comments files to work around an issue with those generated by the C++ compiler. The default value is false. The C++ compiler generates method signatures that differ from the other .NET compilers for methods that take generics as parameters. These methods fail to get documented as they do not match the output of MRefBuilder. The C# and VB.NET compilers generate names that do match it and this option is not needed for comments files generated by them. Set this to true if the project contains C++ compiler generated XML comments files and your project contains methods that take generic types for parameters. This is used to set or get the .NET Framework version to which the documentation links for system types should point. If not found, it will default to the most recent version of the framework installed. This is used to get a dictionary of build component configurations. This allows you to configure the settings for third party build components if they support it. This is used to get a dictionary of build process plug-in configurations. This allows you to select and configure the settings for third party build process plug-ins. This is used to present a design-time property that is used for editing user-defined project file properties. The designer attached to the property handles updating the user-defined project properties. This is used to set or get the placement of any additional and conceptual content items in the table of contents. The default is to place additional and conceptual content items above the namespaces. This is used to set or get whether or not the HTML rendered by BuildAssembler is indented. This is mainly a debugging aid. Leave it set to false, the default to produce more compact HTML. This is used to set or get whether or not all pages should be marked with a "preliminary documentation" warning in the page header. This is used to set or get whether or not a root namespace entry is added to the table of contents to act as a container for the namespaces from the documented assemblies. If true, a root Namespaces table of contents entry will be created as the container of the namespaces in the documented assemblies. If false, the default, the namespaces are listed in the table of contents as root entries. This is used to set or get an alternate title for the root namespaces page and the root table of contents container that appears when is set to true. If left blank (the default), the localized version of the text "Namespaces" will be used. This is used to set or get the help file's title This is used to set or get the name of the compiled help file. Do not include a path or the extension. For HTML Help 2 builds, this is also used as the collection namespace name (avoid spaces). This is used to set or get the language option for the help file and to determine which set of presentation resource files to use. If a matching set of presentation resources cannot be found for the specified language, the US English set will be used. This is used to set or get the URL to use as the link for the copyright notice. If not set, the see cref="CopyrighText"/> (if any) is not turned into a clickable link. This is used to set or get the copyright notice that appears in the footer of each page. If not set, no copyright note will appear. If a is specified without copyright text, the URL appears instead. This is used to set or get the feedback e-mail address that appears in the footer of each page. If not set, no feedback link will appear. If is set, that text will appear as the text for the link. If not set, the e-mail address is used as the link text. This is used to set or get the feedback e-mail link text that appears in the feedback e-mail link in the footer of each page. If set, this text will appear as the link text for the link. If not set, the e-mail address is used for the link text. This is used to set or get additional text that should appear in the header of every page. This is used to set or get additional text that should appear in the footer of every page. This is used to set or get the type of links used to reference other help topics referring to items within the documented assemblies. The default is to produce local links. This is used to set or get the type of links used to reference other help topics referring to framework (SDK) help topics. The default is to produce MSDN links. This is used to set or get the target window for MSDN SDK links. The default is Blank to open the MSDN topics in a new window. This option only has an effect if the property is set to MSDN. This is used to set or get the presentation style for the help topic pages. The default is to use the VS2005 style. This is used to set or get the naming method used to generate the help topic filenames. The default is to use GUID values as the filenames. This is used to set or get the language filters which determines which languages appear in the Syntax section of the help topics. The default is Standard (C#, VB.NET, and C++). This is used to set or get whether or not the feedback control is visible in presentation styles that support it. If true and the presentation style supports it, the feedback control is shown in the topic page footer. This property may be obsolete. It was added for the Sandcastle October 2007 CTP. However, as of the January 2008 release, the feedback control is no longer present. As such, this property may be removed at a later date. This is used to set or get the path to the Sandcastle components This can significantly reduce the amount of time required to load a very large help document. This is used to set or get whether or not a Favorites tab will appear in the help file. This is used to set or get the collection table of contents style used when plugged into an HTML Help 2 collection. The default is Hierarchical. This is used to set or get whether or not to include the stop word list used to identify words to omit from the Help 2 full text search index. This is used to set or get a comma-separated list of namespaces that the collection will be plugged into when deployed using H2Reg.exe. This is used to set or get the version number applied to the help file. The default is 1.0.0.0 This is used to get a collection of additional Help 2 attributes that will be added to each generated help topic. The attributes are added by a custom build component in the BuildAssembler step. This is used to get or set whether or not missing namespace comments are indicated in the help file. Set this to true to add a message to the help topic to indicate that the <summary> tag is missing. A message is also written to the log file. This is used to get or set whether or not missing <summary> tags are indicated in the help file. Set this to true to add a message to the help topic to indicate that the <summary> tag is missing. A message is also written to the log file. This is used to get or set whether or not missing <param> tags are indicated in the help file. Set this to true to add a message to the help topic to indicate that a <param> tag is missing. A message is also written to the log file. This is used to get or set whether or not missing <typeparam> tags on generic types and methods are indicated in the help file. Set this to true to add a message to the help topic to indicate that a <typeparam> tag is missing from a generic type or method. A message is also written to the log file. This is used to get or set whether or not missing <returns> tags are indicated in the help file. Set this to true to add a message to the help topic to indicate that the <returns> tag is missing. A message is also written to the log file. This is used to get or set whether or not missing <value> tags are indicated in the help file. Set this to true to add a message to the help topic to indicate that the <value> tag is missing. A message is also written to the log file. This is used to get or set whether or not missing <remarks> tags are indicated in the help file. Set this to true to add a message to the help topic to indicate that the <remarks> tag is missing. A message is also written to the log file. This is used to get or set whether or not constructors are automatically documented if they are missing the <summary> tag and for classes with compiler generated constructors. Set this to true to automatically add default text for the <summary> tag on constructors that are missing it and for classes with a compiler generated constructor. If set to false and is true, a "missing summary" warning will appear instead. A message is also written to the log file. This is used to get or set whether or not missing <include> tag target documentation is indicated in the help file. Set this to true to add a message to the help topic to indicate that the <include> tag's target documentation is missing. A message is also written to the log file. This is used to get or set whether or not attributes on types and members are documented in the syntax portion of the help file. Set to true to document attributes or false to hide them This is used to get or set whether or not explicit interface implementations are documented. Set to true to document explicit interface implementations or false to hide them. This is used to get or set whether or not inherited members are documented. Set to true to document inherited members or false to hide them. This is used to get or set whether or not inherited framework members are documented. Set to true to document inherited framework members or false to hide them. For this to work, must also be enabled. This is used to get or set whether or not inherited private framework members are documented. Set to true to document inherited private framework members or false to hide them. For this to work, and must also be enabled. This is used to get or set whether or not inherited internal framework members are documented. Set to true to document inherited internal framework members or false to hide them. For this to work, and must also be enabled. This is used to get or set whether or not internal members are documented in the help file. Set to true to document internal members or false to hide them This is used to get or set whether or not private members are documented in the help file. Set to true to document private members or false to hide them This is used to get or set whether or not private fields are documented in the help file. Set to true to document private fields or false to hide them. For this to work, must also be enabled. Private fields are most often used to back properties and do not have documentation. With this set to false, they are omitted from the help file to reduce unnecessary clutter. This is used to get or set whether or not protected members are documented in the help file. Set to true to document protected members or false to hide them This is used to get or set whether or not "protected internal" members are documented as "protected" only in the help file. Set to true to document "protected internal" members as "protected" only or false to document them normally. This option is ignored if is false. This is used to get or set whether or not protected members of sealed classes are documented in the help file. Set to true to document protected members of sealed classes or false to hide them. For this to work, must also be enabled. This is used to get the API filter collection. This event is raised when a property is about to be changed to see if the project file can be edited. If the project file cannot be edited, the handler should cancel the event so that the property is not changed. This event is raised when a property is changed This event is raised when the dirty property changes This event is raised when the assembly list is modified This is a type editor that can display a folder browser dialog to allow selection of a folder path at design time. This can be used in conjunction with the to specify the folder browser dialog's properties. This is overridden to edit the value using a folder browser dialog. The descriptor context The provider The folder path as an object The selected folder path as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This represents a project reference item that can be used by MRefBuilder to locate assembly dependencies for the assemblies being documented. This represents a reference item that can be used by MRefBuilder to locate assembly dependencies for the assemblies being documented. This is a base wrapper class for a build item in the project Constructor The project element associated with the instance This returns the project element associated with the instance This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. This property cannot be reset as it should always have a value. This is used to handle changes in the properties such that the hint path gets stored in the project file. The sender of the event The event arguments Internal Constructor The project element See if specified item equals this one by name alone The object to compare to this one True if equal, false if not Get a hash code for this item Returns the hash code for the assembly path and XML comments path. Return a string representation of the item Returns the assembly path and XML comments path separated by a comma. This is used to filter out the property if not used. The property descriptor collection to filter The filtered property descriptor collection This is used to set or path to the dependency For GAC dependencies, this should be null. This is used to get the reference description This is used to handle changes in the properties such that the hint path gets stored in the project file. The sender of the event The event arguments This is used to get the build item meta data from the referenced project. True to force the metadata to be refreshed, false to only retrieve it if it doesn't exist. Internal Constructor The project element This is used to set or path to the project Hint path isn't applicable to project references This is overridden to return the project name rather than the file path. This is used to get the project reference's GUID This is used to get the project name This collection class is used to hold the configurations for third party build process plug-ins such as the AjaxDoc plug-in. This raises the event. The event arguments The dictionary doesn't raise events automatically so this is raised manually as needed. Default constructor The project that owns the collection This is used to load existing plug-in configuration items from the project file. The plug-in items The information is stored as an XML fragment This is used to write the plug-in configuration info to an XML fragment ready for storing in the project file. The XML fragment containing the plug-in configuration info. Add a new item to the dictionary The plug-in ID True for enabled, false disabled The plug-in configuration The added to the project. If the ID already exists in the collection, the existing item is returned. The constructor is internal so that we control creation of the items and can associate them with the project. This returns a reference to the owning project file This is used to get or set the dirty state of the collection This event is raised when the dictionary is modified This task is used to run HXCOMP.EXE which is used to compile a Help 2 (HxS) help file. Validate the parameters True if the parameters are valid, false if not This returns the full path to the tool The full path to the tool Generate the command line parameters The command line parameters This is overridden to set the working folder before executing the task and to dump the compiler log file after the build. True if successful or false on failure This is overridden to invert the result of the HXCOMP exit code True on success, false on failure. HXCOMP returns 0 on success, 1 if warnings were issued (which is okay), and another non-zero value for failures. We ignore the warning return code and treat it as successful. This read-only property returns the tool name (HXCOMP.EXE) This is overridden to force all standard error info to be logged This is overridden to force all standard output info to be logged This is used to pass in the working folder where the files are located. This is used to pass in the path to the help compiler This is used to pass in the name of the help file (no path or extension). This is used by the comments cache to report a warning message Constructor The message text The message to report This form is used to edit the help index keyword collection Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. Constructor The item collection to edit Close the form The sender of the event The event arguments Delete the selected keyword The sender of the event The event arguments View help for this form The sender of the event The event arguments Mark the collection as dirty if changed The sender of the event The event arguments This is a type editor that displays the to edit the help index keywords for a topic. This is overridden to edit the value using the dialog. The descriptor context The provider The help index keyword collection as an object The edited help index keyword collection as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This form is used to edit the help attribute collection Constructor The item collection to edit If true, the Default button is hidden as topics don't need to include the default attributes. They are added automatically at build time. Close the form The sender of the event The event arguments Add new help attribute The sender of the event The event arguments Delete the selected attribute The sender of the event The event arguments Insert a default set of attributes if they are not already there The sender of the event The event arguments View help for this form The sender of the event The event arguments Mark the collection as dirty if changed The sender of the event The event arguments Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This is used to define the position of a custom build component within the Sandcastle configuration file. Constructor Constructor The XPath navigator containing the configuration This read-only property returns the placement value This read-only property returns the ID of the component If not specified, use . This read-only property returns the type name of the component If not specified, use . This read-only property returns the instance of the component to replace, insert before, or insert after. If not specified 1 is assumed. This property is used to get or set the instance of the component to replace, insert before, or insert after adjusted for other components that have already been processed. This enumeration defines the placement values Place the component before the one indicated. Place the component after the one indicated. Insert the component at the start of the configuration file. Insert the component at the end of the configuration file. Replace the indicated component configuration with this one. The component is not used in this configuration This class is an abstract base class used to convert a project in another format to the new MSBuild format project files used by SHFB 1.8.0.0 and later. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. This can be called after all additional content has been added to create the Folder build items in the project. This is used to set the named property to the specified value using Reflection. The name of the property to set The value to which it is set Property name matching is case insensitive as are the values themselves. This is used to allow setting of simple project properties (non-collection) using command line parameters in the console mode builder. This is thrown if the name parameter is null or an empty string. This is thrown if an error occurs while trying to set the named property. The parsed object value to which the property was set. This converts a relative path to a full path using the old project's folder. The path to convert The fully qualified path This is used to expand a wildcard into all matching files The wildcard to expand. True to include subfolders, false to only include the given folder. The list of matching files. Get the XML text reader used for the conversion Get the new project folder Get the old project folder Get the old project filename Get the new project This class is used to convert Stephan Smetsers Sandcastle GUI project files to the MSBuild format project files used by the help file builder. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. Add additional content to the project The folder containing the content An XML reader isn't used by this converter This class is used to convert the Microsoft example Sandcastle GUI project files to the MSBuild format project files used by the help file builder. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. An XML reader isn't used by this converter This collection class is used to hold the XML comments files during the build process. Save the comments files Search all comments files for the specified member. If not found, add the blank member to the first file. The member name for which to search. The XML node of the found or added member This will search for all type member comments where the ID contains NamespaceDoc and convert them to namespace entries for the containing namespace. The converted ID effectively converts the comments into comments for the class's containing namespace. Returns a list of the comment file paths in a format suitable for inserting into a Sandcastle Configuration file. The working folder path True if generating the list for the inherited documentation tool or false for sandcastle.config. The comment file list XML tags This read-only property returns true if any of the comments files contain an <inheritdoc /> tag indicating that the Inherited Documentation tool will need to be ran. This represents a table of contents entry. This is used to build the table of contents entries for additional content items. Compares this instance to another instance and returns an indication of their relative values. A TocEntry object to compare Returns -1 if this instance is less than the value, 0 if they are equal, or 1 if this instance is greater than the value or the value is null. The property is compared first. If equal, the property is used. Clone this table of contents entry A clone of this table of contents entry Mark the project as dirty if the contained lists change The sender of the event The event arguments This may not be the best way to handle this. Constructor The base path provider Overload for equal operator The first TOC entry object The second TOC entry object True if equal, false if not. Overload for not equal operator The first TOC entry object The second TOC entry object True if not equal, false if they are equal. Overload for less than operator The first TOC entry object The second TOC entry object True if t1 is less than t2, false if not. Overload for greater than operator The first TOC entry object The second TOC entry object True if t1 is greater than t2, false if not. Get a hash code for this item Returns the hash code for the value. Convert the table of contents entry and its children to a string The entries in HTML 1.x help format Convert the table of contents entry and its children to a string in the specified help file format. The help file format to use The entries in specified help format This is thrown if the format is not HtmlHelp1x or HtmlHelp2x. This is used to convert the collection to a string and append it to the specified string builder. The help file format to use The string builder to which the information is appended. Convert the entry to its <a> element form Optional inner text The topic in its <a> element form This will load information about the entry from the node and will also load all child nodes. The site map node to use for this entry Save this node and its children to the specified root node as site map nodes. The root node to which the current entry is added. See if this entry or one of its children is a match to the specified source filename. The source filename to match The match TOC entry or null if not found This is used to track the topic's parent collection This is used by the designer to move items around within the collection. This returns the for the entry. This returns the child table of contents collection for this entry If empty, this is a single item in the table of contents. If it has children, they are listed below this one. A file may or may not be associated with this entry if it is a root node. This is used to get or set the entry's source file path. This is used to get or set the entry's destination file path. This is used to get or set the entry's title in the table of contents. This is used to get or set whether or not the page will appear in the table of contents. For root entries that have children, the node will appear in the table of contents but will have no page associated with it. The other options such as will still have an effect. This is used to get or set whether or not the item is the default topic for the help file. This is used to get or set whether or not the topic has links that need to be resolved when the file is copied. This is used to get or set whether or not the topic has <pre> blocks that have a lang attribute to indicate that they should be colorized. This is used to get or set whether or not the topic has <code /> blocks that need expanding. This is used to get or set whether or not the topic has tags that should be resolved to project options. This is used to get or set whether or not the table of contents is split after this entry. This is only valid on root entries and the first one seen will cause all items from that tiem onward to appear below the API content. All items prior to the entry will appear before the API content. If used, the ContentPlacement project property will be ignored. This is used to get or set the sort order for the entry within its group. Entries with identical sort order values will sort by title as well. Items with not specific sort order will sort below those with a defined sort order. This exception class is thrown by the application if it encounters an unrecoverable error. Default constructor. There are three overloads for the constructor This is used to cache indexed XML comments files This is used to raise the event The event arguments Constructor The maximum size of the cache Index all comments files found in the specified folder. The path to search. If null or empty, the current directory is assumed. The wildcard to use. If null or empty, "*.xml" is assumed. True to recurse subfolders or false to only use the given folder. Optional. If not null, an is added to the collection for each file indexed. Get the comments for the specified key The key for which to retrieve comments An for the comments or null if not found. Get the comments file from the index cache that contains the given key. The key for which to retrieve the file The indexed comments file or null if not found Return all keys in this index A string array containing the keys This read-only property returns the number of items indexed This read-only property returns the number of comments files that were indexed. This is used by the cache to report duplicate key warnings This class represents an external application that is used to edit an additional content file. Clone this object A clone of the object Constructor See if the given extension is a match for this file editor. The extension to check True if this is the editor for the given file extension or false if not. Substitute actual values for the macro place holders The content item The current project file A string containing the actual arguments to pass to the editor application. This is used to get or set a description of the editor application This is used to get or set the filename extensions for which this content file editor will be used. Separate the extensions with space, semi-colon, or a comma This is used to get or set the parameters to pass to the application. The following macros can be used to subsitute item and path values into the argument string. Macro Name Value Used $ContentItem The full path to the content item to be edited $ProjectFile The fully qualified path and filename of the current project. $ProjectFolder The fully qualified path to the current project.

The macro names are case-insensitive. Enclose arguments in double quotes if they may contain spaces.

This is used to get or set the source path to the editor application.
This is used to set or get the startup folder used when launching the content file editor. If not set, the current project's path is used. This returns a description of the entry suitable for display in a bound list control. This property is used to serialize the application path is not serializable because it does not have a parameterless constructor. This stands in for the property when this class is serialized. This property is used to serialize the startup folder is not serializable because it does not have a parameterless constructor. This stands in for the property when this class is serialized. This form is used to edit the API filter collection This is called by the build process thread to update the main window with the current build step. The sender of the event The event arguments This is called by the build process thread to update the main window with information about its progress. The sender of the event The event arguments This is used to convert the API filter from the build into a dictionary so that it is easier to look up the entries. The filter collection to search for project level exclusions. This is used to load the reflection information file and to load the root namespace nodes into the tree view. The namespace nodes and type nodes are loaded on demand to reduce the time needed to create the tree view and to conserve some memory for extremely large builds.

Documented APIs are loaded into the first root node. Inherited APIs are loaded into the second node. By splitting the inherited stuff out, we can optimze the API filter and allow the user to get rid of unwanted inherited members with a single selection.

Add all types found in the specified namespace node to the specified tree node. The parent tree node to which they are added.
Add all base types found in the specified namespace node to the specified tree node. The parent tree node to which they are added. Add all members found in the specified type node to the specified tree node. The parent tree node to which they are added. Add all inherited members found in the specified type node to the specified tree node. The parent tree node to which they are added. Examine the nodes and optimize the state of the filter based on various conditions. The node in which the checked state changed. Set the checked state of all child nodes to the parent node's state if true Search the children of the specified tree node looking for the given API member name. The member name for which to search The root node to search The tree node matching the given ID or null if not found This is used to add namespace filters to the API filter The tree node from which to start This will add child filter entries for each tree node where the checked state matches the given state. The filter to which the entries are added The tree nodes to scan The check state to match This is used to see if the given node and all of its children match the specified state. The nodes to check The state to match True if all children's checked states match the parent node's checked state, false if not. Constructor The item collection to edit This is used to start the background build process from which we will get the information to load the tree view. The sender of the event The event arguments Shut down the build process thread and clean up on exit The sender of the event The event arguments Refresh the collection and close the form The sender of the event The event arguments View help for this form The sender of the event The event arguments Reset the API filter by clearing its content and closing the form The sender of the event The event arguments This is used to load child tree nodes on demand which speeds up the initial form load for extremely large projects. The sender of the event The event arguments Ignore attempts to uncheck the root nodes, namespace and type nodes in the inherited APIs, and nodes that are excluded via other project settings (i.e. namespace comments and <exclude/> tags. The sender of the event The event arguments Unchecking a root node would get rid of everything. Unchecking a namespace or type for an inherited API may inadvertently get rid of something that is needed. Project excludes will be removed regardless of the API filter setting so must remain excluded. Optimize the filter when a node checked state changes The sender of the event The event arguments Search for members that match the search conditions The sender of the event The event arguments Goto the selected member in the tree view The sender of the event The event arguments Include or exclude the selected members The sender of the event The event arguments Double-clicking an item is the same as clicking Goto The sender of the event The event arguments Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This is used to indicate the visibility of a member in the node information type below. The member is public The member is protected The member is internal (Friend) The member is private This is used to associate additional information with each tree node to make it easier to look stuff up. Constructor The text for the tree view The API ID This will determine the API entry type and visibility based on the information in the reflection information node. If this API node contains template information, add that info to the node's display text. Determine the API entry type from the ID and possible the subgroup. The type character to convert The subgroup to use An indicating the entry type. Determine the visibility from the API node information The API type character from the ID The API node information An indicating the entry's visibility. Get or set the text to display in the tree view This will be the full namespace name or the type or member name without the namespace. This read-only property is used to get the API ID (the namespace, type, or member name). For types, this will be set to the filter name to use if the class is nested within another class. In such cases, the parent class name(s) must prefix the type so that it can be correctly excluded or included. Get or set the API node from the reflection information file This will also set the based on the reflection information in the node. This read-only property is used to get the API entry type for this node. This read-only property is used to get the visibility of this node. Get or set whether or not the entry is a project exclude If excluded via the Namespace Comments project option or an <exclude /> tag, this property will be set to true and the node cannot be marked as exposed. It is also used to disallow changes to some of the fixed and inherited API entry nodes. This form is used to edit namespace summaries and to indicate which namespaces should appear in the help file. Constructor The namespace summary item collection to edit This is called by the build process thread to update the main window with the current build step. The sender of the event The event arguments This is called by the build process thread to update the main window with information about its progress. The sender of the event The event arguments Load the namespace information from the reflection information The reflection information filename Do a partial build on load to gather new namespace information that isn't currently in the project's namespace list. The sender of the event The event arguments Shut down the build process thread and clean up on exit The sender of the event The event arguments Store the changes and close the dialog box The sender of the event The event arguments View help for this form The sender of the event The event arguments When the item changes, show its summary in the text box and set the Appears In list box data source. The sender of the event The event arguments Mark the summary item as documented or not when the check state changes. Clear the selection to prevent accidental deletion of the text The sender of the event The event arguments Store changes to the summary when the textbox loses focus The sender of the event The event arguments Delete an old namespace entry that is no longer needed. The sender of the event The event arguments Apply the namespace filter to the namespace list The sender of the event The event arguments Mark all namespaces as included The sender of the event The event arguments Mark all namespaces as excluded The sender of the event The event arguments Note that at least one will need to be selected or the build will fail due to lack of information to document. Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This is an component that allows you to add status bar text for menu items and form controls. When built for use with .NET 2.0, it also supports adding status bar text for menu strip, tool strip, and status strip components. Default constructor There are two overloads for the constructor Constructor. This one takes a reference to a container. The container for the component Clean up any resources being used. True to release both managed and unmanaged resources, false to just release unmanaged resources. This is implemented to determine if the component can be extended with the extra properties. The object to check True if it can be extended, false if not components and everything derived from ToolStripItem (.NET 2.0) and are extended with the StatusBarText and ShowAsBlank properties with the following exceptions: Form, Label, PictureBox, ProgressBar, ScrollBar, Splitter, StatusBar, ToolBar, ToolStrip (.NET 2.0) and controls derived from them. The Form contain controls and the other controls cannot receive the focus needed to display the text so there is no point in giving them status bar text. The exception to the above rule is LinkLabel which can receive the focus and thus can be extended. ToolStripItem components are only supported when built for use with .NET 2.0. This is used to retrieve the status bar text for a component. The component for which to get the status bar text The message string if found or null if not found This is thrown if the component is null or if it is not a menu item, control, or a tool strip item. This stores the status bar text for the specified component. The component associated with the message The status bar text for the component The designer converts strings containing nothing but spaces to empty strings and won't serialize them to code. If you want a blank string to display, use to set the "show as blank" flag to true instead. This is thrown if the component is null or if it is not a menu item, control, or a tool strip item. This is used to retrieve the "show as blank" flag for a menu item or control. The item for which to get the flag True if it will show a blank status bar message or false if not. This is thrown if the component is null or if it is not a menu item, control, or a tool strip item. This stores the "show as blank" flag for the specified component. The component associated with the property The flag value for the component The designer converts strings containing nothing but spaces to empty strings and this equates to the default and the value is not serialized to code. If you want a blank string to display, set this property to true instead. This property takes precedence over the StatusBarText property. This is thrown if the component is null or if it is not a menu item, control, or a tool strip item. This can be used to initialize the status strip progress bar controls. The maximum value There are six overloads for this method. This can be used to initialize the status strip progress bar controls. The maximum value A note for the progress note status label control. If null, the current text is left alone. This can be used to initialize the status strip progress bar controls. The minimum value The maximum value This can be used to initialize the status strip progress bar controls. The minimum value The maximum value The current value This can be used to initialize the status strip progress bar controls. The minimum value The maximum value A note for the progress note status label control. If null, the current text is left alone. This can be used to initialize the status strip progress bar controls. The minimum value The maximum value The current value The step value for the progress bar A note for the progress note status label control. If null, the current text is left alone. This can be used to update the progress bar with a new value This version updates the progress by the step value. There are four overloads for this method This can be used to update the progress bar with a new value A note for the progress note status label control. This version updates the progress by the step value and updates the progress note. This can be used to update the progress bar with a new value The current value This can be used to update the progress bar with a new value The current value A note for the progress note status label control. If null, the current text is left alone. This can be used to reset the status strip progress bar to its minimum value. This version resets the progress bar to zero and clears the progress note. There are two overloads for this method. This can be used to reset the status strip progress bar to its minimum value and display a new progress message. The progress note to display in the progress note status label. If set to null, the message is cleared. This is used to set or get the default status bar component to use for displaying the status bar text messages. This property is static and must be set at some point during application initialization. This component will be used unless the property is set to override it. // Define the default status bar to use in the main form's // constructor public MainForm() { InitializeComponent(); //========= // .NET 1.1 //========= // Tell the StatusBarTextProvider component the status bar // to use. StatusBarTextProvider.ApplicationStatusBar = sbStatusBar; // You can also use any panel you like. The default is zero // (the left-most panel). For the demo, we'll use the one // in the middle. StatusBarTextProvider.ApplicationDisplayPanel = 1; //========= // .NET 2.0 //========= // Tell the StatusBarTextProvider component the component // to use to display the text. When using a tool strip // component, the ApplicationDisplayPanel property is ignored. StatusBarTextProvider.ApplicationStatusBar = tslStatusText; // Define the status label and progress bar too. This allows // easy access to those items from anywhere within the // application. StatusBarTextProvider.StatusLabel = tslProgressNote; StatusBarTextProvider.ProgressBar = tspbProgressBar; } ' Define the default status bar to use in the main form's ' constructor Public Sub New() MyBase.New() InitializeComponent() '========= ' .NET 1.1 '========= ' Tell the StatusBarTextProvider component the status bar ' to use. StatusBarTextProvider.ApplicationStatusBar = sbStatusBar; ' You can also use any panel you like. The default is zero ' (the left-most panel). For the demo, we'll use the one ' in the middle. StatusBarTextProvider.ApplicationDisplayPanel = 1; '========= ' .NET 2.0 '========= ' Tell the StatusBarTextProvider component the component ' to use to display the text. When using a tool strip ' component, the ApplicationDisplayPanel property is ignored. StatusBarTextProvider.ApplicationStatusBar = tslStatusText; ' Define the status label and progress bar too. This allows ' easy access to those items from anywhere within the ' application. StatusBarTextProvider.StatusLabel = tslProgressNote; StatusBarTextProvider.ProgressBar = tspbProgressBar; End Sub This is thrown if the object is not a status bar control or a tool strip item. This is used to set or get the status bar panel in which to display the messages in the common application status bar. This property is static and must be set at some point during application initialization. This display panel will be used unless the property is set to override the status bar used. In that case, the is used instead.

The default is zero (the first panel). If the status bar does not have panels, the index exceeds the panel count, or the status bar's property is false, messages will be shown in the status bar's Text property instead. This property is ignored if using a tool strip item to display the text.

This is used to set or get the default text to show when no item has the focus or no status text for the application status bar. By default, it will be set to the text in the selected status bar component. If you set it to a different value, set this property after specifying the status bar control to use.
This is used to get or set the tool strip status label component that can be used to display a status message in conjunction with the component. This property is only available when used with .NET 2.0. This is used to get or set the tool strip progress bar component that can be used to display progress through a long running task. This can be used in conjunction with . This property is only available when used with .NET 2.0. This is used to get or set the status bar component to use for this instance. If not set or set to null, it will use the status bar control assigned to the property. This is thrown if the object is not a status bar control or a tool strip item. This is used to set or get the status bar panel in which to display the messages when the property is set to a status bar. The default is zero (the first panel). If the status bar does not have panels, the index exceeds the panel count, or the status bar's property is false, messages will be shown in the status bar's Text property instead. If using the , this property is ignored. It is also ignored if using a tool strip item to display the text. This is used to set or get the default text to show when no item has the focus or no status text for the instance status bar. By default, it will be set to the text in the selected status bar component. If set to a different value, set this property after specifying the status bar control to use. This class contains the options for the items that need status bar text. Constructor The message text to display There are two overloads for the constructor Constructor The "show as blank" flag Set or get the message text The "show as blank" flag This collection class is used to hold the documentation sources A documentation source is an assembly, an XML comments file, a Visual Studio project (C#, VB.NET, or J#), or a Visual Studio solution containing one or more C#, VB.NET or J# projects. Internal constructor The project that owns the collection This is used to sort the collection in ascending order. This is used to load existing documentation sources from the project file. The documentation source items The information is stored as an XML fragment This is used to write the documentation source info to an XML fragment ready for storing in the project file. The XML fragment containing the documentation sources Add a new item to the collection The filename to add The configuration to use for projects The platform to use for projects True to include subfolders, false to only search the top-level folder. The added to the project or the existing item if the filename already exists in the collection. The constructor is internal so that we control creation of the items and can associate them with the project. This is overridden to mark the collection as dirty when it changes The event arguments This is used to get or set the dirty state of the collection This read-only property returns a list of assemblies in the collection. This read-only property returns a list of XML comments files in the collection. This represents an API entry that is to be removed from the reflection information using MRefBuilder's namespace ripping feature. Compares this instance to another instance and returns an indication of their relative values. An ApiFilter object to compare Returns -1 if this instance is less than the value, 0 if they are equal, or 1 if this instance is greater than the value or the value is null. Entries are sorted by API entry type and full name Clone the API filter A clone of the filter Constructor There are two overloads for the constructor Constructor. This takes the API type and the full name The API entry type The fully qualified name True to expose it, false to hide it This is used to convert the entry and its children to a string ready for use in the MRefBuilder config file. The string builder to which the information is appended. This is used to load the content item information from the project file. The XML text reader from which the information is loaded. This is used to save the content item information to the project file. The XML text writer to which the information is written. This is used to convert an API type letter to an enumerated value. The letter to convert The ApiEntryType represented by the letter This is used to get or set the API entry type This is used to get the fully qualified name of the API entry This is used to get the API filter name For API entry types other than namespaces, this is the name without the namespace and, for methods properties, etc. the type. This is used to get or set whether or not the entry is exposed This is used to get or set whether or not the entry is excluded via the project (i.e. via the SHFB Namespaces option or an <exclude /> tag. This returns the child API filter collection for this entry For namespaces and types, if there are children, they represent the specific entries within the namespace or type to hide or expose. This is a simple wrapper around an MSBuild project that is used to extract information from it during a help file build. Constructor The MSBuild project to load This is used to set the active configuration and platform used when evaluating the properties. The active configuration The active platform The output directory If the platform is set to any variation of "Any CPU" and it isn't found in the project, it will be converted to "AnyCPU" (no space). This works around an issue with Team Build that includes the space even though it should not be present. This is used to set the Visual Studio solution macros based on the specified project name. The solution name to use Clone the project's references and add them to the dictionary The dictionary used to contain the cloned references This is used to get the underlying MSBuild project file reference This is used to get the assembly name This is used to get the XML comments file name This is used to get the target framework version This is used to get the project GUID This task is used to generate the MRefBuilder response file and run MRefBuilder.exe. Validate the parameters True if the parameters are valid, false if not This returns the full path to the tool The full path to the tool Generate the command line parameters The command line parameters Generate the response file commands An empty string Rather than letting the tool task create the response file, we'll create it ourself in the working folder so that we can look at it if the build fails. This is overridden to return the working folder for the build The working folder for the build This read-only property returns the tool name (MRefBuilder.exe) This is overridden to force all standard error info to be logged This is overridden to force all standard output info to be logged This is used to pass in the Document Internals flag setting This is used to pass in the path to the Sandcastle tools This is used to pass in the working folder where the files are located. This is used to pass in the assemblies to reflect over This is used to pass in the resolved references References are optional. This is a type editor that displays the to edit the help attribute items for a project or topic. This is overridden to edit the value using the dialog. The descriptor context The provider The help attribute item collection as an object The edited help attribute item collection as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This type converter is used to convert a FolderPath object to and from a string so that it can be edited in a . This is used to select and edit the third-party build component configurations. To be editable, the build component configuration file must be present in the .\Build Components folder or a subfolder beneath it. The build components folder is found under the common application data folder. Constructor The current configurations Close this form The sender of the event The event arguments Update the build component details when the selected index changes The sender of the event The event arguments Update the enabled state of the build component based on its checked state. The sender of the event The event arguments Add the selected build component to the project with a default configuration. The sender of the event The event arguments Edit the selected build component's project configuration The sender of the event The event arguments This is handled to resolve dependent assemblies and load them when necessary. The sender of the event The event arguments The loaded assembly Delete the selected build component from the project The sender of the event The event arguments View help for this form The sender of the event The event arguments Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This collection class is used to hold the conceptual content topics for a project. This class is serializable so that it can be copied to the clipboard. This interface is used to interact with project files that can generate table of contents entries. Generate the table of contents for the conceptual topics The table of contents collection The base path provider Get the content layout Constructor The content layout file associated with the collection. Topics are not loaded until the method is called. If the file parameter is null, this is assumed to be a child topic collection. This is used to sort the collection Values are sorted by display title. Comparisons are case-sensitive. Load the collection from the related file This will be done automatically at constructor. This can be called to reload the collection if needed. This gets all possible content files from the project and attempts to match them to the topics in the collection by ID. Save the topic collection to the related content layout file This is used by contained items to notify the parent that a child list changed and thus the collection should be marked as dirty. The item that changed Set the topic file in any entry that has a matching ID The topic file The IDs should be unique across all entries but, if a duplicate exists, this will help find it as we'll get a more descriptive error later in the build. This creates copies of the conceptual topic files in the build process's working folder. The folder in which to place the topic files The build process Each topic file will be named using its . If necessary, its content will be wrapped in a <topic> element. Sub-topics are written out recursively. Add all topics from the specified folder recursively to the collection and to the given project file. The folder from which to get the files The base path to remove from files copied from another folder into the project folder. On the first call, this should match the value. The project to which the files are added Only actual conceptual content topic files are added. They must have a ".aml" extension and must be one of the valid document types. Folders will be added as sub-topics recursively. If a file with the same name as the folder exists, it will be associated with the container node. If no such file exists, an empty container node is created. This is overridden to set the inserted item's parent to this collection. This is overridden to set the inserted item's parent to this collection. This is overridden to clear the parent on the removed item The index of the item to remove This is overridden to clear the default topic and split TOC topic when the collection is cleared. Generate the table of contents for the conceptual topics The table of contents collection The base path provider This read-only property returns the project file item associated with the collection. This is used to get or set the default topic It returns the default topic or null if one is not set This is used to get or set the topic at which the table of contents is split by the API content. This will only be valid if it refers to a root level topic. It will return null if a split location has not been set. This can be used to get a topic by its unique ID (case-insensitive) The ID of the item to get. Returns the topic with the specified or null if not found. This is used to get the build item related to the content layout file containing the collection items. This public enumerated type defines the locations in which a browser window can be opened for the MSDN SDK links. The URL is loaded into a new unnamed window. The current document is replaced with the specified URL. The URL is loaded into the current frame's parent. If the frame has no parent, this value acts like the value Self. The URL replaces any framesets that may be loaded. If there are no framesets defined, this value acts like the value Self. This class represents a file that is part of the project (MAML/additional content, site map, stylesheet, etc.). This is used to handle changes in the properties such that the path gets stored in the project file. The sender of the event The event arguments This is used to handle changes in the properties such that the path gets stored in the project file. The sender of the event The event arguments Internal Constructor The project element Refresh the paths due to a parent path being renamed This is used to filter the properties based on the . The property descriptor collection to filter The filtered property descriptor collection This is used to set or get the build action of the item This is used to set or get the filename (include path) This is used to set or get the link path If the item has no link path, this returns the path. This is used to get the full path to the item This is used to set or get the name of the item This is used to get or set an ID for a conceptual content image This is used to indicate that an image file is part of the conceptual content. Image items without an ID are not valid and will be ignored. This is used to get or set alternate text for an image This is used to get or set whether an item is copied to the output folder during a build. If this is set to true, the image will always be copied to the build's media folder. If false, it is only copied if referenced in a topic. For content items such as HTML pages, this is used to get or set whether or not the item is excluded from the table of contents. If true, the item is not included in the table of contents. If false, it will be included. This is used to get or set the sort order for content layout and site map files. This form is used to edit user-defined project properties Note that the MSBuild project object does not provide a way to delete or rename properties. As such, you have to edit the project file by hand to do those tasks. Constructor The project file reference This is used to see if the project can be edited. If not, abort the change by throwing an exception. Close the form The sender of the event The event arguments View help for this form The sender of the event The event arguments This is used to add a new user-defined property to the project The sender of the event The event arguments Update the property grid with the selected item Refresh the list box item when a property changes The sender of the event The event arguments Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This is used to get or set the user-defined property collection This is used to get or set the project file reference This is used to edit the user-defined project property items Constructor The owning dialog The build property to edit or null for a new property Return the name of the build property This is used to get or set the owning dialog This is used to get or set the property name Existing properties cannot be renamed as the MSBuild project object doesn't provide a way to do it. Nor does it allow deleting properties. This is used to get or set the Condition attribute value for the property. This is used to get or set the value for the property This is a type editor that displays the to edit the user-defined properties in a project. This is overridden to edit the value using the dialog. The descriptor context The provider The help file builder project as an object The help file builder project as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This class is used to provide a custom regular expression search function to XPath queries using an XSLT context. This is not used by this class. The base URI of the first document to compare The base URI of the second document to compare Always returns zero (equal). This is not used by this class. The whitespace node to preserve or strip For this class, this always returns true to preserve whitespace. This is not used by this class. The prefix of the variable as it appears in the expression The name of the variable Always returns null Resolves a function reference and return an representing the function. The is used at execution time to get the return value of the function. The prefix of the function as it appears in the XPath expression The name of the function An array of argument types for the function being resolved. This allows you to select between methods with the same name (for example, overloaded methods). An representing the function This is not used by this class. Always returns true to include whitespace in the output This represents an XML comment file and is used when searching for and adding missing documentation tag information. Mark the file as modified if a node is changed The sender of the event The event arguments Constructor The XML comments filename This is thrown if the filename is null or an empty string. Save the comments file if it was modified This is called to fixup the comments for C++ compiler generated XML comments files. The C++ compiler generates method signatures that differ from the other .NET compilers for methods that take generics as parameters. These methods fail to get documented as they do not match the output of MRefBuilder. The C# and VB.NET compilers generate names that do match it and this option is not needed for comments files generated by them. The C++ compiler also has problems resolving references to some members if it hasn't seen them yet. These are prefixed with "!:" which is removed by the fix-up code. This read-only property is used to get the source path of the file This is used to load the comments file on first use This read-only property is used to get the root members node This type converter allows you to select a .NET Framework version from those currently installed on the system. This is used to get the standard values by searching for the .NET Framework versions installed on the current system. This is overridden to return the values for the type converter's dropdown list. The format context object Returns the standard values for the type This is overridden to indicate that the values are exclusive and values outside the list cannot be entered. The format context object Always returns true This is overridden to indicate that standard values are supported and can be chosen from a list. The format context object Always returns true This is used to find out if the specified version of the .NET Framework is present on the system. The version for which to look True if present, false if not found This is used to get the latest version that starts with the given value. The version for which to look The latest version starting with the specified value or the most recent version if not found. This read-only property returns the version number of the most recent copy of the .NET Framework installed on the system. This type converter allows you to select a culture from a list representing a set of available language resource folders. This is overridden to return the values for the type converter's dropdown list. The format context object Returns the standard values for the type This is used to compare two culture info objects by display name Compare two items The first item to compare The second item to compare -1 if item 1 is less than item 2, 0 if they are equal, or 1 if item 1 is greater than item 2. This is a type editor that displays the to edit the namespace summaries for a project. This is overridden to edit the value using the dialog. The descriptor context The provider The namespace summary item collection as an object The edited namespace summary item collection as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This is used to give a more descriptive message in the property grid for the . This public enumerated type defines the conceptual document types Unknown document type or empty container node File not found Invalid document (i.e. bad format, parsing errors) Conceptual document Error Message document Glossary document How To document Orientation document Reference List document Reference With Syntax document Reference Without Syntax document Sample Document SDK Technology Overview Architechture document SDK Technology Overview Code Directory document SDK Technology Overview Orientation document SDK Technology Overview Scenarios document SDK Technology Overview Technology Summary document Troubleshooting document User Interface Reference document Walkthrough document Whitepaper document XML Reference document Raw HTML This defines the content types that can be edited Code snippets Edit image references Edit tokens Edit topics This class is used to hold the conceptual content settings for a project during a build and for editing. Constructor The project from which to load the settings This is used to copy the additional content token, image, and topic files to the build folder. The build process This will copy the code snippet file if specified, save token information to a shared content file called _Tokens_.xml in the build process's working folder, copy the image files to the .\media folder in the build process's working folder, save the media map to a file called _MediaContent_.xml in the build process's working folder, and save the topic files to the .\ddueXml folder in the build process's working folder. The topic files will have their content wrapped in a <topic> tag if needed and will be named using their value. This is used to create the conceptual content build configuration files. The build process This will create the companion files used to resolve conceptual links and the _ContentMetadata_.xml and ConceptualManifest.xml configuration files. This is used to create the companion files used to resolve conceptual links. The build process Create the content metadata file The build process The content metadata file contains metadata information for each topic such as its title, table of contents title, help attributes, and index keywords. Help attributes are a combination of the project-level help attributes and any parsed from the topic file. Any replacement tags in the token values will be replaced with the appropriate project values.

A true MAML version of this file contains several extra attributes. Since Sandcastle doesn't use them, I'm not going to waste time adding them. The only stuff written is what is required by Sandcastle. In addition, I'm putting the title and PBM_FileVersion item elements in here rather than use the separate companion files. They all end up in the metadata section of the topic being built so this saves having two extra components in the configuration that do the same thing with different files.

Create the content metadata file The build process The content metadata file contains metadata information for each topic such as its title, table of contents title, help attributes, and index keywords. Help attributes are a combination of the project-level help attributes and any parsed from the topic file. Any replacement tags in the token values will be replaced with the appropriate project values.
This is used to get the conceptual content image files This is used to get the conceptual content code snippet files This is used to get the conceptual content token files This is used to get the conceptual content layout files This is used to get a collection of the conceptual content topics Each item in the collection represents one content layout file from the project. This class is used to handle all aspects of the build process in a separate thread. This class is used to handle all aspects of the build process in a separate thread. Load and initialize the plug-ins used by this project This is thrown if a requested plug-in is not found or has a version that is not supported by this version of the help file builder. Execute all plug-ins that need to execute in the given build step that have the given execution behavior. The execution behavior True if at least one plug-in was executed or false if no plug-ins were executed. Plug-ins will execute based on their execution priority. Those with a higher priority value will execute before those with a lower value. Plug-ins with identical priority values may execute in any order within their group. This can be used by plug-ins using the execution behavior to execute plug-ins that want to run before the plug-in executes its main processing. This will only run once per step. Any subsequent calls by other plug-ins will be ignored. This can be used by plug-ins using the execution behavior to execute plug-ins that want to run after the plug-in has executed its main processing. This will only run once per step. Any subsequent calls by other plug-ins will be ignored. This is called to determine the default topic for the help file and insert any additional table of contents entries for the additional content files. The format of the table of contents (HtmlHelp1x, HtmlHelp2x, or Website). In the absence of an additional content item with a default topic indicator, the default page is determined by extracting the first entry from the generated table of contents file. If an additional content item with a default topic indicator has been specified, it will be the used instead. The default topic is not used by HTML Help 2.x files. This is thrown if the format is not HtmlHelp1x, HtmlHelp2x, or Website. This is called to create the help project output folder and copy the standard content files (art, media, scripts, and styles) to the help project folder. This creates the folders Output\ and Output\html under the working folder and copies the stock art, icon, media, script, and style sheet files from the {@PresentationPath}\art, {@PresentationPath}\icons, {@PresentationPath}\media, {@PresentationPath}\scripts, and {@PresentationPath}\styles folders which are located in the Sandcastle installation folder. The art, icons, and media folders may or may not exist based on the style. This copies files from the specified source folder to the specified destination folder. If any subfolders are found below the source folder and the wildcard is "*.*", the subfolders are also copied recursively. The source path from which to copy The destination path to which to copy This returns a complete list of files for inclusion in the compiled help file. The folder to expand The HTML help file format The full list of all files for the help project The help file list is expanded to ensure that we get all additional content including all nested subfolders. The format parameter determines the format of the returned file list. For HTML 1.x, it returns a list of the filenames. For HTML 2.x, it returns the list formatted with the necessary XML markup. This is used to generate the website helper files and copy the output to the project output folder ready for use as a website. This is called to generate the HTML table of contents when creating the website output. The HTML to insert for the table of contents. This is called to recursively append the child nodes to the HTML table of contents in the specified string builder. The list over which to iterate recursively. The string builder to which the entries are appended. This is used to change the filenames assigned to each member in the reflection information file. Apply the project's Visibility category properties to the reflection information file. This is used to remove entries from the reflection information file so that it does not appear in the help file. See the Document* properties in the class for information on the items removed. Remove attribute information Remove explicit interface implementation information Remove inherited member information from each type's element list based on the project settings. Remove member information matching the specified XPath query. The XPath query used to find the members. A description of the members removed. The number of members to be removed Actual removal of the members is deferred. On very large files, the XPath queries took to long when removing the <elemen> members. Change the visibility of "protected internal" members to "protected". Remove protected members from sealed classes. This is used as the match evaluator for the regular expression that finds the <element> entries to remove from the reflection information file. The match found The string with which to replace the match The removals are done this way as it proved to be a very slow process to remove the child elements at the time they were found with an XPath query on very large files. This is used to clean up the HTML Help 2 collection files so that they are ready for use in registering the collection. Open the specified collection file and return it as an ready for editing. The file to open The DTD is removed before returning it. This raises the event. The event arguments This raises the event. The event arguments Constructor The project to build There are two overloads for the constructor. Constructor The project to build Pass true to perform a partial build Call this method to perform the build on the project. This event fires when the current build step changes. This event fires to report progress information. This is used to report progress during the build process within the current step. The message to report A list of arguments to format into the message text This method has two overloads. This is used to report an error that will abort the build The current build step The error code The message to report A list of arguments to format into the message text This just reports the error. The caller must abort the build. This is used to report a warning that may need attention The warning code The message to report A list of arguments to format into the message text This is used to report progress during the build process and possibly update the current step. The current build step The message to report A list of arguments to format into the message text This event fires when the current build step changes. This event fires to report progress information. Force garbage collection to reduce memory usage. The reflection information file and XML comments files can be quite large. To reduce memory usage, we force a garbage collection to get rid of all the discarded objects. Make sure the path isn't one the user would regret having nuked without warning. The name of the path property It's current value The path to the current project Since most people don't read the help file and also ignore the warning in the property grid description pane, we'll take some steps to idiot-proof the dangerous path properties. I'm starting to lose count of the number of people that point WorkingPath at the root of their C:\ drive and wonder why all their files disappear.

Paths checked for include root references to hard drives and network shares, most common well-known folders, and the project's root folder. This is thrown if the path is one of the ones that probably should not be used.

This is used to gather a list of files produced by the build
Find the Sandcastle tools and the HTML help compiler This is thrown if any of the tools cannot be found. Find a folder by searching the Program Files folders on all fixed drives. The path for which to search The path if found or an empty string if not found This is used to find the named executable in one of the Visual Studio SDK installation folders. The name of the executable to find The path if found or an empty string if not found The search looks in all "Visual*" folders under the Program Files special folder on all fixed drives. Validate the documentation source information and copy the files to the working folder. This is thrown if any of the information is invalid. This is used to run a step in the build process The file to execute. This will be one of the template batch files with all the necessary values for the paths and options plugged into it. The arguments to pass to the file if any. This is the thread procedure used to capture standard ouput text This is the thread procedure used to capture standard error text Report the output from the currently running tool The line to report This is called to generate the namespace summary file Add project or namespace comments The member node to modify. The summary text to add. Transform the specified template text by inserting the necessary values into the place holders tags. The template text to transform An optional list of arguments to format into the template before transforming it. The transformed text Transform the specified template by inserting the necessary values into the place holders and saving it to the working folder. The template to transform The folder where the template is located The folder in which to save the transformed file The path to the transformed file This is used to read in a file using an appropriate encoding method The file to load Pass the default encoding to use. On return, it contains the actual encoding for the file. The contents of the file. When reading the file, use the default encoding specified but detect the encoding if byte order marks are present. In addition, if the template is an XML file and it contains an encoding identifier in the XML tag, the file is read using that encoding. Replace a field tag with a value from the project The match that was found The string to use as the replacement This is used to get a list of .NET Framework comments file locations. The locations of the comments files. A dictionary to contain the cache file names for the comments file sets. If the given language version of the comments are present, they will be used. If not, the default English version comments files are used. The framework version for which to get comments files. This is used to generate an appropriate list of entries that represent .NET Framework comments file locations for the various configuration files. The type of list to generate (frameworkcommentlist, importframeworkcommentlist, or cachedframeworkcommentlist) The list of framework comments file sources in the appropriate format. This is used to merge the component configurations from the project with the sandcastle.config file. This handles merging of the custom component configurations into the configuration file including dependencies. The ID of the component to merge The build component definition The root container node The configuration node to merge True if this is a conceptual content configuration file or false if it is a reference build configuration file. This is called to copy the additional content files and build a list of them for the help file project. Note that for wilcard content items, the folders are copied recursively. This is used to merge the conceptual content table of contents with any additional content table of contents information. This will also split the table of contents if any entry has the "split" option. A split in the conceptual content will take precedence as additional content is always appended to the end of the conceptual content. Likewise, a default topic in the conceptual content will take precedence over a default topic in the additional content. This is used to merge destination file information into the site map TOC. The the site entry to update In addition, files in the site map that do not exist in the TOC built from the defined content will be processed and copied to the root folder. This is used to extract table of contents information from a file that will appear in the help file's table of contents. The file from which to extract the information The table of contents entry This is called to load an additional content file, resolve links to namespace content and copy it to the output folder. The source filename to copy The destination filename The entry being resolved. Replace a link to a namespace item with a link to the HTML page for it. The match that was found The string to use as the replacement Replace a shared content item with it's value. Note that these may be nested. The match that was found The string to use as the replacement This is used to load a code block from an external file. The HTML encoded block extracted from the file and wrapped in a <pre> tag ready for colorizing. If a region attribute is found, only the named region is returned. If n region attribute is found, the whole file is returned. Relative paths are assumed to be relative to the project folder. This is used to transform a *.topic file into a *.html file using an XSLT transformation based on the presentation style. The source topic filename This is used to generate the API filter collection used by MRefBuilder to exclude items from the reflection information file. Namespaces and members with an <exclude /> tag in their comments are removed using the ripping feature as it is more efficient than searching for and removing them from the reflection file after it has been generated especially on large projects. This is used to manually apply the specified API filter to the specified reflection information file. The API filter to apply The reflection information file This can be used by any plug-in that does not produce a reflection information file using MRefBuilder.exe. In such cases, the API filter is not applied unless the plug-in uses this method. If the reflection information file is produced by MRefBuilder.exe, there is no need to use this method as it will apply the API filter automatically to the file that it produces. Apply a member filter to the specified type. The APIs node from which to remove info The type filter to be processed Remove an entire namespace and all of its members The APIs node from which to remove info The namespace ID to remove Remove an entire type and all of its members The APIs node from which to remove info The type ID to remove This returns a containing the currently loaded plug-ins. The key is the plug in name. The value is a reference to an interface for the plug-in. This allows you to access other plug-ins to facilitate sharing of information between them. This returns the path to MSBuild.exe This returns the location of the help file builder executables This returns the location of the help file builder template folder. This returns the project folder name This returns the project filename without the folder This returns the output folder where the log file and help file can be found after the build process has finished. This returns the name of the working files folder This returns the name of the main Sandcastle folder determined by the build process. This returns the name of the HTML Help 1.x compiler folder determined by the build process. This returns the name of the HTML Help 2.x compiler folder determined by the build process. This returns the name of the main Sandcastle presentation style folder determined by the build process. This returns the name of the log file used for saving the build progress messages. This returns the name of the reflection information file This returns the current project being used for the build Although there is nothing stopping it, project options should not be modified during a build. This returns the current help file format being generated The GenerateHelpFormatTableOfContents, GenerateHelpFileIndex, GenerateHelpProject, UpdateTableOfContents, and CompilingHelpFile steps will run once for each help file format selected. This property allows a plug-in to determine which files it may need to work with during those steps or to skip processing if it is not relevant. This read-only property is used to get the partial build flag Partial builds occur when editing the namespace summaries, editing the API filter, and as part of some plug-ins and may not require all build options. In a partial build, build steps after ApplyVisibilityProperties are not executed. This is used to get the conceptual content settings in effect for the build. This will not return a useable value until after the CopyStandardContent . This returns a list of the Help 1 (CHM) files that were built If the Help 1 format was not built, this returns an empty collection. This returns a list of the Help 2 (HxS) files that were built If the Help 2 format was not built, this returns an empty collection. This returns a list of the website files that were built If the website format was not built, this returns an empty collection. This controls whether or not the API filter is suppressed. By default, it is not suppressed and the API filter will be applied. The API Filter designer uses this to suppress the filter so that all members are obtained. This event is raised to report a change in the build step This event is raised to report progress information throughout each build step. This read-only property returns the XML comments files collection This read-only property returns the API filter that is used at build-time to filter the API elements. This is a combination of the project's API filter, namespace exclusions, and <exclude /> tag exclusions. This is used to limit which values are available to properties using as their underlying type. Constructor Build actions that serve no purpose for selection are removed. This class represents a conceptual content topic file Constructor The file build item from the project This is thrown if the file item is null. This will parse the file content and extract the document type, unique ID, and revision number. If false and the file has already been parsed, the method just returns. If true, the file is reparsed to refresh the information. This is used to parse the ID and revision number from an HTML file This is used to get or set the file build item Get the name of the file without the path Get the full path to the file This is used to get the unique ID of the topic This is used to get the topic's revision number This read-only property is used to get the document type This read-only property is used to return the error message if returns Invalid. This class is a custom XPath function used to perform a regular expression search in XPath queries. The function should be passed a value to compare, the regular expression to use, and a Boolean indicating whether or not to do a case-insensitive match. Some examples of XPath queries using the function: //apis/api[matches-regex(string(@id), 'utils.*proj', boolean(true)) //apis/api[matches-regex(string(@id), 'Proj|Filt|Excep', boolean(false)) This is called to invoke the matches-regex method. The XSLT context for the function call The arguments for the function call The context node for the function call An object representing the return value of the function (true for a match, false for no match). This is thrown if the number of arguments for the function is not three. Gets the supplied XPath types for the function's argument list. This information can be used to discover the signature of the function which allows you to differentiate between overloaded functions. Always returns an array with two String types and a Boolean type specified Gets the minimum number of arguments for the function. This enables the user to differentiate between overloaded functions. Always returns three Gets the maximum number of arguments for the function. This enables the user to differentiate between overloaded functions. Always returns three Gets the XPath type returned by the function Always returns Boolean This class contains information about the loaded build components. Constructor The XPath navigator containing the component's configuration information This read-only property returns the ID of the build component This read-only property returns the type name of the component This read-only property returns the path to the assembly containing the component This read-only property returns copyright information for the component. This read-only property returns version information for the component. This read-only property returns a description of the component This read-only property returns the hidden flag If hidden, the component will not be selectable from within the help file builder. This read-only property returns true if the component configuration is valid or false if it is not. If not valid, the component cannot be used. If not valid, this read-only property returns the reason This read-only property returns the method name used to configure the component interactively from within the help file builder. If not specifed, a default editor will be used to allow modifying the raw XML configuration text. This read-only property returns the default configuration for the component. This will include the enclosing <component> tag. This read-only property returns the position of the component in the reference build configuration file (sandcastle.config). If not defined, it will not be used. This read-only property returns the position of the component in the conceptual build configuration file (conceptual.config). If not defined, it will not be used. This read-only property returns the collection of component IDs on which this component depends. This is used to give a more descriptive message in the property grid for the . This type converter is used to convert a FilePath object to and from a string so that it can be edited in a . This represents a conceptual content token that can be used to insert a common item, value, or construct into topics. This class is serializable so that it can be copied to the clipboard. Constructor The token name defaults to "NoName" Constructor The token name The token value Convert the token to its <token> element form The token in its <token> element form This is used to get or set the token name This is used to get or set the token value The value can contain help file builder replacement tags. These will be replaced at build time with the appropriate project value. This public enumerated type defines the API entry types that can be removed from the reflection information file. An unknown entry A namespace A class An interface An interface An enumeration A delegate A constructor A method An operator A property An event A field This public enumerated type defines the type of links used to reference other help topics referring to framework (SDK) help topics. No active links. MS-Help style links for use within an HTML 2.x help file. Links to framework topics on MSDN. This is the default. This type is compatible with HTML 1.x and HTML 2.x help files. This defines the build action (item name) for build items in a project No action, the item is ignored Conceptual content image file Conceptual content code snippets file Conceptual content token file Conceptual content layout file Additional content site map file Additional content topic transformation file General content file (HTML, stylesheet, images not related to conceptual content, etc.) A folder (project explorer designation only, not a build action) The project (project explorer designation only, not a build action) A documentation source (project explorer designation only, not a build action) A reference item (project explorer designation only, not a build action) This public enumerated type defines the missing documentation tags for which to search. Do not search for any missing tags. Search for missing <summary> tags. Search for missing <param> tags. Search for missing <returns> tags. Search for missing <value> tags. Search for missing <remarks> tags. Automatically document constructors if they are missing a <summary> tag. Search for missing namespace comments. Search for missing <typeparam> tags. Search for missing <include> target documentation. This collection class is used to hold a plug-in's configuration and enabled state. This is the base class for collection items that are stored in an MSBuild property element. Constructor The owning project This is used to see if the project can be edited. If not, abort the change by throwing an exception. This is used to get the owning project file This is used to get or set the dirty state of the item Internal constructor The enabled state The configuration The owning project This is used to get or set the plug-in's enabled state If set to false, the plug-in will not be used in the build This is used to get or set the plug-in's configuration information This should be an XML fragment. The root node should be named configuration. This is used to mark a property that needs its value escaped when stored in an MSBuild project file. MSBuild requires that the following characters be escaped in property values unless they are intended to be interpreted by the build engine: % * ? @ $ ( ) ; '. In addition, this attribute will cause the values to be HTML encoded so that any HTML characters, especially tag delimiters are not interpreted. MSBuild tends to add XML namespaces to things it thinks are XML elements. This is used to HTML encode and escape an MSBuild property value. The unescaped value The HTML encoded escaped value This is used to return an unescaped and HTML decoded MSBuild value The escaped value The unescaped and HTML decoded value MSBuild provides an escape method but no unescape method. Go figure. This is used to convert the match to its unescaped character The match The unescaped character as a string Convert a hex character to its integer value The hex character The integer value This class is used to manage the set of third party build components. Load the build components found in the ".\Build Components" folder and its subfolders. This is used to resolve replacement tags and environment variables in a build component's assembly path and return the actual path to it. The path to resolve The actual absolute path to the assembly This read-only property returns the build components folder This is used to set or get the Sandcastle installation folder This returns a dictionary containing the loaded build component information. The dictionary keys are the component IDs. This class is a custom XPath function used to convert an API name into its more readable form used for searching. The function should be passed an XML node containing the necessary information used to obtain the name and convert it into the searchable format along with a boolean indicating whether or not the name should be fully qualified with the namespace and type. Some examples of XPath queries using the function: //apis/api[matches-regex(resolve-name(node(), boolean(false), 'utils.*proj', boolean(true)) //apis/api[matches-regex(resolve-name(node(), boolean(true)), 'Proj|Filt|Excep', boolean(false)) This is called to invoke the resolve-name method. The XSLT context for the function call The arguments for the function call The context node for the function call An object representing the return value of the function (the name string). This is thrown if the number of arguments for the function is not two. This is used to replace the template marker in a type name The API node to use The node text to modify The updated node text Gets the supplied XPath types for the function's argument list. This information can be used to discover the signature of the function which allows you to differentiate between overloaded functions. Always returns an array with a Navigator type and a Boolean type entry. Gets the minimum number of arguments for the function. This enables the user to differentiate between overloaded functions. Always returns two Gets the maximum number of arguments for the function. This enables the user to differentiate between overloaded functions. Always returns two Gets the XPath type returned by the function Always returns String This represents a a namespace summary item that can be used to add comments to a namespace in the help file or exclude it completely from the help file. Internal constructor The namespace's name The flag indicating whether or not the namespace is to be documented. The summary text The owning project Return the namespace name as the string representation of the object. The namespace name This is used to get or set whether or not the namespace is included in the help file. This is used to get or set the namespace summary comments This read-only property is used to get the namespace name This task is used to clean (remove) help file output from the last build. This is used to execute the task and clean the output folder True on success or false on failure. This is used to pass in the project filename Since already wraps the MSBuild project, it made sense to just load it in the task and build it that way rather than have one or more other structures to hold passed in project properties that then got passed to the build process. This is used to pass in the output path that needs to be cleaned This is used to pass in the optional working path that needs to be cleaned. This is used to pass in the optional log file location that needs to be cleaned. This is a really basic implementation of an algorithm used to create a full-text index of the website pages so that they can be searched using the ASP.NET web pages. So that an assembly does not have to be deployed to deserialize the index information, the index information is represented using built-in data types (string and long). Constructor The file containing common word exclusions. The file should contain one work per line in lowercase. These words will not appear in the index. The culture information Create a full-text index from web pages found in the specified file path. The path containing the files to index Words in the exclusion list, those that are less than three characters long, and anything starting with a digit will not appear in the index. Save the index information to the specified location. The path to which the index files are saved. Binary serialization is used to save the index data. This form is used to edit a build component configuration as XML text. This is used for components that have to built-in configuration method. Constructor Close the form without saving The sender of the event The event arguments Save the changes The sender of the event The event arguments Clear the text selection on entry to prevent accidental deletion of the text. The sender of the event The event arguments Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. This is used to set or get the configuration text This collection class is used to hold the conceptual content image references for a project. Constructor The project file containing the image build items. This is used to sort the collection Values are sorted by display title and ID. Comparisons are case-insensitive. Write the image reference collection to a map file ready for use by BuildAssembler. The file to which the image reference collection is saved. The path to which the image files should be copied. The build process Images with their property set to true are copied to the media folder immediately. This is used to refresh the collection by loading the image build items from the project. Find the image with the specified ID (case-insensitive). The ID to find The image if found or null if not found Find the image with the specified filename. The filename to find The image if found or null if not found This can be used to get an image by its unique ID (case-sensitive) The ID of the item to get. Returns the image with the specified or null if not found. This form is used to edit the project summary comments. Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. Constructor Clear the selection to prevent accidental deletion of the text The sender of the event The event arguments Get or set the project summary comments This property descriptor can be used to alter the read-only state of a property in a property grid at runtime based on other conditions. To use it, derive a new class and override the property. Constructor The type descriptor The property descriptor This is used to get the associated type descriptor This is used to get the property descriptor wrapped by this class Derived classes must override this method This class is used to convert NDoc 1.x project files to the MSBuild format project files used by the help file builder. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. Add additional content to the project The folder containing the content An XML reader isn't used by this converter This class is used to convert DocProject project files to the MSBuild format project files used by the help file builder. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. Parse project properties from the project extensions section Import a file into the project The file information Import image file information from a media content file. The media content filename Import attribute information from a companion file The companion filename Create a content layout file for the conceptual topics Convert a conceptual content topic and all of its children The XML reader containing the topics The XML writer to which they are written Topic settings were found but no content layout file. In such cases, this is called to create a default content layout file based on the settings alone. An XML reader isn't used by this converter This class holds a set of constants that define various application values such as the application name, common data folder, etc. The company name The application name The application folder in which the component and user data files are stored. This folder will be located under the CommonApplicationData or LocalApplicationData folder. This folder is located under the LocalApplicationData folder and contains user-defined item templates that can be added to a project. This folder is located under the LocalApplicationData folder and contains user-defined conceptual content topic templates that can be added to a project. This folder is located under the CommonApplicationData folder and contains custom build components that can be added to a project. This folder is located under the CommonApplicationData folder and contains custom plug-ins that can be added to a project. This collection class is used to hold the reference items for a project Internal constructor The project that owns the collection This is used to sort the collection in ascending order. This is used to ensure that the collection has up to date information about the reference build items in the project. True to refresh if out of date or false to only load the references if not already done. The collection is only loaded when necessary Add a new GAC or file reference item to the collection The reference name. This will be the GAC name or the base filename for file reference. The hint path for file references. For GAC references, this should be null. The added to the project. If the named item already exists in the collection a reference to the existing item is returned. The constructor is internal so that we control creation of the items and can associate them with a project element. Add a new project reference item to the collection The path to the project The added to the project. If the named item already exists in the collection a reference to the existing item is returned. Remove an item from the collection and from the project file The index of the item to remove This is overridden to suppress the event when loading references The event arguments This public enumerated type defines the optional visible items in the help file. None of the optional items are visible. Document attributes. Document explicit interface implementations. Document inherited members. Document inherited framework members. For this to work, InheritedMembers must also be enabled. Document internal members. Document private members. Document protected members. Document "protected internal" members as "protected" only. Document protected members of sealed classes. For this to work, Protected must also be enabled. Document private fields. For this to work, Privates must also be enabled. Document inherited private framework members. For this to work InheritedFrameworkMembers must also be enabled. Document inherited internal framework members. For this to work InheritedFrameworkMembers must also be enabled. This class defines the execution context in which the plug-in is being called during the build process. Constructor The current build step. The behavior of the plug-in for the current context. This is thrown if an attempt is made to specify more than one behavior type. This read-only property returns the current build step This read-only property returns the execution behavior for the plug-in in the current context. Before indicates that it is being called before the normal help file builder processing. After indicates that it is being called after the normal help file builder processing. InsteadOf indicates that it is being called instead of the normal help file builder processing. This property is used to set or get whether or not the plug-in actually executed. It is true by default. Set it to false if the plug-in did not execute. This collection class is used to hold the help attribute items for a project. Constructor The project that owns the collection or null for a standalone collection This is used to sort the collection Values are sorted by attribute name and value This is used to load existing help attribute items from the project file. The help attribute items The information is stored as an XML fragment Load the help attributes from the given XML text reader This is used to write the help attribute info to an XML fragment ready for storing in the project file. The XML fragment containing the help attribute info Write the collection to the given XML text writer The XML text writer to which the information is written. True to write out the containing HelpAttributes element, false to exclude it. Add a new item to the collection The attribute name The attribute value The added to the project. If If the item already exists in the collection, the existing item is returned. The constructor is internal so that we control creation of the items and can associate them with the project. Convert the collection to its string form for use in the sandcastle.config file. The help attribute collection in string form ready for use in the Sandcastle BuildAssembler configuration file. This is used to mark the collection as changed when there is no associated project. This is overridden to mark the collection as dirty when it changes The event arguments This is used to get or set the dirty state of the collection This type converter converts between a string and a object and vice versa. A object. The value is always a four-part version number with any unused parts defaulted to zero. If the new value is null or an empty string, null is returned. This type converter allows you to select a presentation style folder from those currently installed in the .\Presentation folder found in the main installation folder of Sandcastle. This is used to get the standard values by searching for the .NET Framework versions installed on the current system. This is overridden to return the values for the type converter's dropdown list. The format context object Returns the standard values for the type This is overridden to indicate that the values are exclusive and values outside the list cannot be entered. The format context object Always returns true This is overridden to indicate that standard values are supported and can be chosen from a list. The format context object Always returns true This is used to find out if the specified style is present on the system. The style for which to look True if present, false if not found This is used to get the first style that matches case-insensitively or, failing that, starts with or contains the given value case-insensitively. The style for which to look The best match or the first style if not found. This returns the default style Returns vs2005 if present. If not, it returns the first best match or, failing that, the first style in the list. This is used to select and edit the plug-in configurations. To be editable, the plug-in assembly must be present in the .\Plug-Ins folder or a subfolder beneath it. The plug-ins folder is found under the common application data folder. Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. Constructor The current configurations Close this form The sender of the event The event arguments Update the plug-in details when the selected index changes The sender of the event The event arguments Update the enabled state of the plug-in based on its checked state The sender of the event The event arguments Add the selected plug-in to the project with a default configuration. The sender of the event The event arguments Edit the selected plug-in's project configuration The sender of the event The event arguments Delete the selected plug-in from the project The sender of the event The event arguments View help for this form The sender of the event The event arguments This is used to give a more descriptive message in the property grid for the . This collection class is used to hold the conceptual content tokens for an associated token file. Constructor The token file associated with the collection. Tokens are not loaded until the method is called. This is used to sort the collection Values are sorted by token name and value. Comparisons are case-sensitive. Load the collection from the related file This will be done automatically at constructor. This can be called to reload the collection if needed. Save the token collection to its related file ready for use by BuildAssembler. This read-only property returns the project file item associated with the collection. This is a custom event arguments class for the event. Constructor Get the current build step of the build process Get the message associated with the progress report Get a flag indicating whether or not the build has completed This collection class is used to hold the namespace summary items for a project. Namespaces that appear in the assemblies but not in this list are documented by default and will appear without a namespace summary. Internal constructor The project that owns the collection This is used to sort the namespace items by name This is used to load existing namespace summary items from the project file. The namespace summary items The information is stored as an XML fragment This is used to write the namespace summary info to an XML fragment ready for storing in the project file. The XML fragment containing the namespace summary info Add a new item to the collection The namespace name True for documented, false for not documented The summary text The added to the project. If the namespace already exists in the collection, the existing item is returned. The constructor is internal so that we control creation of the items and can associate them with the project. Create a temporary item that isn't part of the project The namespace name The that can later be added to the project if necessary. This is thrown if the given namespace already exists in the collection. This is overridden to mark the collection as dirty when it changes The event arguments This is used to get a reference to the project that owns the collection. This is used to get or set the dirty state of the collection Indexer. This can be used to retrieve the summary information for the specified namespace. The namespace for which to search The namespace summary information if found or null if not found. This public enumerated type defines the naming method to use for the help topic filenames. Use the default GUID file naming method. Use the member name without parameters as the filename. The characters ":", ".", "#", and "`" in the name are replaced with an underscore (i.e. T:CustomType becomes T_CustomType, M:CustomType.#ctor becomes M_CustomType__ctor, P:CustomType.Property becomes P:CustomType_Property, etc). Duplicate names will have an incrementing value appended to the end of the name (i.e. M_CustomType_Method, M_CustomType.Method_1, M_CustomType_Method_2, etc). Use the hashed member name without parameters as the filename. No character replacements are made for this option and the GetHashCode method is used to generate the hash value and it is formatted as a hex value. This is useful for extremely long type names that cause the filename to exceed the maximum length when the full path is included. Duplicate names will have an incrementing value appended to the name prior to creating the hash value as needed. This public enumerated type defines the languages to include in the help topic Syntax section. Do not include the syntax section. Include C# syntax. Include VB.NET syntax. Include C++ syntax. Include the J# syntax. Include the JScript syntax. Include the Visual Basic usage syntax. Include the XAML usage syntax. Include the JavaScript syntax. The standard set (C#, VB.NET, and C++). Include all languages except the usage filters Include all languages and usage. This collection class is used to hold the help index keyword items for a project. This is used to sort the collection Values are sorted by index name and term This is used to load the keyword collection from the project file. The XML text reader from which the information is loaded. This is used to save the keyword collection to the project file. The XML text writer to which the information is written. This is used to mark the collection as changed when there is no associated project. This represents an HTML Help 2.x attribute that can be added to the XML data island in each help topic generated by BuildAssembler. Internal constructor The attribute name The attribute value The owning project Compares this instance to another instance and returns an indication of their relative values. A MSHelpAttr object to compare Returns -1 if this instance is less than the value, 0 if they are equal, or 1 if this instance is greater than the value or the value is null. Entries are sorted by name and then value Get a hash code for this item Returns the hash code for the attribute name and value. Return a string representation of the item Returns the item in its XML format This is used to get or set the attribute name This is used to get or set the attribute value This task is used to build help file output using the Sandcastle Help File Builder. This is used to execute the task and perform the build True on success or false on failure. This is used to obtain a reference to the project that is currently being built. The current project if possible or null if it could not be obtained. The build engine provides no way to get a reference to the current project. As such, we have to resort to reflection to get it. This was much easier under .NET 2.0 as the project was a project of the BuildEngine object. The .NET 3.5 build engine hides it way down in the object hierarchy. We could build the project without it but we lose the ability to use command line overrides and changes to user-defined properties. This is called by the build process thread to update the application with the current build step. The sender of the event The event arguments This is called by the build process thread to update the task with information about progress. The sender of the event The event arguments This is used to pass in the project filename Since already wraps the MSBuild project, it seemed redundant to define each and every property on this task and map them to the project properties. As such, this task will attempt to use the executing project to create the Sandcastle project instance. If that fails or is true, this file will be loaded instead. The downside is that property overrides on the command line will be ignored. This is used to pass in the configuration to use for the build This is used to pass in the platform to use for the build This is used to specify the output directory containing the build output for solution and project documentation sources when using Team Build. This property is optional. If not specified, the default output path in project file documentation sources will be used. This is used to set or get the output logging verbosity flag This property is optional. If set to false (the default), only build steps are written to the task log. If set to true, all output from the build process is written to the task log. This is used to set or get whether the log file is dumped to the task log if the help file project build fails. This property is optional. If set to false (the default), the log is not dumped if the build fails. If set to true, all output from the build process is written to the task log if the build fails. This is used to specify whether or not to load the specified rather than use the executing project. This property is optional. If set to false, the default, the executing project is used as the Sandcastle project to build. If set to true, the specified is loaded. In such cases, command line property overrides are ignored. This is used to return a list of the Help 1 (CHM) files that resulted from the build. This is used to return a list of the Help 2 (HxS) files that resulted from the build. This is used to return a list of the website files that resulted from the build. This is used to return a list of all files that resulted from the build (all help formats). This is a type editor that displays a checked list box as the drop-down editor for an enumerated data type that represents a set of flags. This makes it easy to select multiple values with the drop-down. This is overridden to edit the value using a checked list box control as the drop-down editor. The descriptor context The provider The enumerated type object to edit The edited enumerated type object This is overridden to specify the editor's edit style The descriptor context Always returns DropDown as long as there is a context and an instance. Otherwise, it returns None. This is a type editor that displays the to edit the build component configurations. This is overridden to edit the value using the dialog. The descriptor context The provider The component configuration dictionary as an object The edited component configuration dictionary as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This is a custom property grid that allows you to set the initial width of the property name pane and has a context menu that allows you to hide the description pane and reset the selected property value. Constructor Clean up any resources being used. True to release both managed and unmanaged resources, false to just release unmanaged resources. This is overridden to reset the pane width to the user-preferred width after creating the control. This updates the context menu based on the current property grid state before it is displayed. The sender of the event The event arguments Reset the value of the current property The sender of the event The event arguments Show or hide the property description pane The sender of the event The event arguments Copy the current property's name to the clipboard The sender of the event The event arguments This is used to set or get the width of the property name pane Reflection is used to modify the pane width This represents a conceptual content CodeReference that can be used to insert a common item, value, or construct into topics. This class is serializable so that it can be copied to the clipboard. Constructor The reference ID Convert the token to its <codeReference> element form The token in its <codeReference> element form This is used to get or set the CodeReference name This exception class is thrown by the application if it encounters an unrecoverable error. Default constructor. There are six overloads for the constructor This constructor takes an error code and a message string The error code. The suggested format is one to four letters to identify the component or process followed by four digits, zero padded to the left, with no spaces. The exception message This constructor takes an error code, a message string, and an inner exception. The error code. The suggested format is one to four letters to identify the component or process followed by four digits, zero padded to the left, with no spaces. The exception message The inner exception Deserialization constructor for use with . The serialization info object The streaming context object This implements the interface and adds the error code to the serialization information. The serialization info object The streaming context Get the error code associated with the exception This collection class is used to hold build items from a project. Constructor The project file containing the build items The build action for the items to hold in the collection. This is used to sort the collection Values are sorted by display title and ID. Comparisons are case-insensitive. Sort content layout files The first file item The second file item General sort The first file item The second file item This is used to refresh the collection by loading the image build items from the project. This class defines when a plug-in gets executed during the build process. Constructor The step in which the plug-in should run. The behavior of the plug-in when it is ran. This is thrown if an attempt is made to set the Before or After behavior with the InsteadOf behavior. It is also thrown for invalid combinations of build step and behavior, i.e. Initializing with Before or InsteadOf. See the help file for a full list. There are two overloads for the constructor. This constructor is used to set a specific execution priority. The step in which the plug-in should run. The behavior of the plug-in when it is ran. The execution priority for the plug-in. This read-only property returns the build step in which the plug-in will run. This read-only property returns the execution behavior of the plug-in. This read-only property returns the execution priority of the plug-in. Plug-ins with a higher priority value will execute before those with a lower priority value. If not specified, the default is 1,000. This defines the different cache types that can be used This defines the items that GetDisplayName returns This defines the parts to use when comparing assembly information This defines the various ID values used for assembly properties This is used to represent an assembly name This is used to enumerate the assemblies in the GAC This defines the one and only method we need in the help file builder Private constructor This is used to obtain an instance of the assembly enumerator A reference that will end up containing the IAssemblyEnum interface. Reserved. Must always be null. An assembly name that is used to filter the enumeration. This can be null to enumerate all assemblies in the GAC. Specify one (and only one) ASM_CACHE_FLAGS value. Reserved. Must always be null. This is a type editor that can display a file dialog to allow selection of a file path at design time for a object. It is used in conjunction with the to specify the file dialog title, filter, and type This is a type editor that can display a file dialog to allow selection of a file path at design time for a string object. It is used in conjunction with the to specify the file dialog title, filter, and type This is overridden to edit the value using a file dialog. The descriptor context The provider The file path as an object The selected file path as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This is overridden to edit the value using a file dialog. The descriptor context The provider The file path as an object The selected file path as an object This is used to give a more descriptive message in the property grid for the . This represents a COM reference item that can be used by MRefBuilder to locate assembly dependencies for the assemblies being documented. Internal Constructor The project element Hint path isn't applicable to COM references This is used to get the project reference's GUID This is used to get the major version number This is used to get the minor version number This is used to get the wrapper tool A strongly-typed resource class, for looking up localized strings, etc. Returns the cached ResourceManager instance used by this class. Overrides the current thread's CurrentUICulture property for all resource lookups using this strongly typed resource class. Looks up a localized string similar to <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <!-- The configuration and platform will be used to determine which assemblies to include from solution and project documentation sources --> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>$guid1$</ProjectGuid> [rest of string was truncated]";. This class is used to get a list of assemblies in the Global Assembly Cache (GAC). This static property is used to obtain a list containing the fully qualified names of all assemblies in the GAC. This is a simple derived group box control that draws the label text followed by a dividing line to the right of the text but no other surrounding border. Constructor This is overridden to draw the text and the dividing line The event arguments This public enumerated type defines the placement of the additional content items in the table of contents if any are defined. Additional content appears above the namespaces Additional content appears below the namespaces This event arguments class is used to specify which project property changed along with the old and new values. Constructor The property name The old value The new value This read-only property returns the property name This read-only property returns the old value This read-only property returns the new value This interface defines the methods required to implement a build process plug-in for the Sandcastle Help File Builder. Derived classes must also implement the methods. This method is used by the Sandcastle Help File Builder to let the plug-in perform its own configuration. A reference to the active project The current configuration XML fragment A string containing the new configuration XML fragment The configuration data will be stored in the help file builder project. This method is used to initialize the plug-in at the start of the build process. A reference to the current build process. The configuration data that the plug-in should use to initialize itself. This method is used to execute the plug-in during the build process The current execution context This read-only property returns a friendly name for the plug-in This read-only property returns the version of the plug-in This read-only property returns the copyright information for the plug-in. This read-only property returns a brief description of the plug-in This read-only property returns true if the plug-in should run in a partial build or false if it should not. If this returns false, the plug-in will not be loaded when a partial build is performed. This read-only property returns a collection of execution points that define when the plug-in should be invoked during the build process. This public enumerated type defines the execution behavior of a build process plug-in. Execute before the help file builder's normal processing. Execute after the help file builder's normal processing. Execute both before and after the help file builder's normal processing. Execute instead of the help file builder's normal processing. If this flag is set, Before and After are ignored. This public enumerated type defines the type(s) of help file generated HTML Help 1.x format built with HHC.EXE HTML Help 2.x format built with HXCOMP.EXE A website with basic frame set viewer page An HTML Help 1.x and an HTML Help 2.x file An HTML Help 1.x file and website An HTML Help 2.x file and website An HTML Help 1.x file, HTML Help 2.x file, and a website This task is used to run HHC.EXE which is used to compile a Help 1 (CHM) help file. Support is provided for wrapping the tool in a call to an application such as SBAppLocale.exe to workaround encoding issues with the Help 1 compiler. Validate the parameters True if the parameters are valid, false if not This returns the full path to the tool The full path to the tool Generate the command line parameters The command line parameters This is overridden to set the working folder before executing the task and to invert the result returned from the help compiler. True if successful or false on failure This is overridden to invert the result of the HHC exit code True on success, false on failure. HXCOMP is backwards and returns 0 on failures and 1 on success. We invert the result to be consistent with other tasks. This read-only property returns the tool name (HHC.EXE or the value of if specified). This is overridden to force all standard error info to be logged This is overridden to force all standard output info to be logged This is used to pass in the working folder where the files are located. This is used to pass in the path to the help compiler This is used to pass in the help project filename This is used to pass in the name of the application to use as the localization wrapper. This is optional. If specified, it will be used to run the help compiler to work around encoding issues. This is used to get or set the language ID for the localization tool (see cref="LocalizeApp" />). This is optional. If not specified, it defaults to 1033. It is ignored if is not set. This represents a conceptual content CodeEntityReference that can be used to insert a common item, value, or construct into topics. This class is serializable so that it can be copied to the clipboard. Constructor The reference ID Convert the entity to its <codeEntityReference> element form The entity in its <codeEntityReference> element form Convert the entity to its <see> element form The token in its <see> element form This is used to get or set the CodeEntityReference name This public enumerated type defines the collection table of contents style for HTML Help 2 collections. The collection content will be grouped under a root node. The collection content will be listed at the root level. This collection class is used to hold the conceptual content code snippet information for an associated code snippets file. Constructor The code snippets file associated with the collection. Code snippets are not loaded until the method is called. This is used to sort the collection Values are sorted by ID. Comparisons are case-sensitive. Load the collection from the related file This will be done automatically at constructor. This can be called to reload the collection if needed. This is used to get the build item related to the code snippet file containing the collection items. This class contains information about the loaded plug-ins Constructor Type information for the plug-in Get a new instance of the plug-in A new instance of the plug-in This read-only property returns the name of the plug-in This read-only property returns the copyright information for the plug-in. This read-only property returns a description of the plug-in This read-only property returns the version number of the plug-in This read-only property returns type information for the plug-in This collection class is used to hold the API filter entries for MRefBuilder to remove. Unlike other collections in the project, this one is cleared and rebuilt if it changes. As such, the contained items do not notify the project when they change as they are created anew each time the collection is rebuilt. Internal constructor The project that owns the collection Child collections do not contain a reference to the project file. This is used to sort the collection All top level items and their children are sorted by API entry type and then by name This is used to load existing API filter items from the project file. The API filter items The information is stored as an XML fragment This is used to write the API filter info to an XML fragment ready for storing in the project file. The XML fragment containing the help attribute info This is used to merge an entry with the filter collection The entry type The member's full name True to expose it, false to remove it True if this is a project exclude (currently this will always be true). True if merged without conflict or false if the merged member conflicted with an existing entry. The existing entry will take precedence. Add a new type entry to this namespace collection The full name of the entry The namespace The type name The member True if merged without conflict or false if the merged member conflicted with an existing entry. The existing entry will take precedence. Entries added by this method are exclusions based on namespace comment or <exclude/> tag exclusions. Add a new member entry to this type collection The full name of the entry The type name The member True if merged without conflict or false if the merged member conflicted with an existing entry. The existing entry will take precedence. Entries added by this method are exclusions based on namespace comment or <exclude/> tag exclusions. This is overridden to mark the collection as dirty when it changes The event arguments Convert the API filter entry and its children to a string The entries in the MRefBuilder API filter XML format Clone the API filter collection A clone of the collection This is used to get or set the dirty state of the collection This is used to get a reference to the project that owns the collection. Child collections do not contain a reference to the project file. This class is used to represent a file path. Support is included for treating the path as fixed or relative and for expanding environment variables in the path name. This raises the event The event arguments This raises the event The event arguments This is used to handle an implicit conversion from a object to a string. The to convert. The file path as a relative or absolute path string based on its current settings. FilePath filePath = new FilePath(@"%APPDATA%\TestApp\App.config"); // The FilePath object is automatically converted to a string // representing the expanded, fully qualified path. string pathString = filePath; Dim filePath As New FilePath("%APPDATA%\TestApp\App.config") ' The FilePath object is automatically converted to a string ' representing the expanded, fully qualified path. Dim pathString As String = filePath Overload for equal operator. The first object to compare The second object to compare True if equal, false if not. Overload for not equal operator. The first object to compare The second object to compare True if not equal, false if they are. This returns the fully qualified path for the specified path. This version allows wildcards in the filename part if present. The path to expand The fully qualified path name The System.IO.Path version of will throw an exception if the path contains wildcard characters. This version does not. This helper method can be used to convert an absolute path to one that is relative to the given base path. The base path An absolute path A path to the given absolute path that is relative to the given base path. If the base path is null or empty, the current working folder is used. string basePath = @"E:\DotNet\CS\TestProject\Source"; string absolutePath = @"E:\DotNet\CS\TestProject\Doc\Help.html"; string relativePath = FilePath.AbsoluteToRelativePath(basePath, absolutePath); Console.WriteLine(relativePath); // Results in: ..\Doc\Help.html Dim basePath As String = "E:\DotNet\CS\TestProject\Source" Dim absolutePath As String = "E:\DotNet\CS\TestProject\Doc\Help.html" Dim relativePath As String = _ FilePath.AbsoluteToRelativePath(basePath, absolutePath); Console.WriteLine(relativePath) ' Results in: ..\Doc\Help.html This helper method can be used to convert a relative path to an absolute path based on the given base path. The base path A relative path An absolute path If the base path is null or empty, the current working folder is used. string basePath = @"E:\DotNet\CS\TestProject\Source"; string relativePath = @"..\Doc\Help.html"; string absolutePath = FilePath.RelativeToAbsolutePath(basePath, relativePath); Console.WriteLine(absolutePath); // Results in: E:\DotNet\CS\TestProject\Doc\Help.html Dim basePath As String = "E:\DotNet\CS\TestProject\Source" Dim relativePath As String = "..\Doc\Help.html" Dim absolutePath As String = _ FilePath.RelativeToAbsolutePath(basePath, relativePath); Console.WriteLine(absolutePath) ' Results in: E:\DotNet\CS\TestProject\Doc\Help.html This is used to prevent the Path property from showing as modified in the designer. Always returns false The property is mainly for display purposes in the designer but can be used for making changes to the expanded path if needed. The property is used as the display value in the designer. Default constructor. The file path is undefined. The base base provider There are three overloads for the constructor. Constructor. Assign the specified path. A relative or absolute path. The base base provider Unless is set to true, the path is always treated as a relative path. Constructor. Assign the specified path and fixed setting. A relative or absolute path. True to treat the path as fixed, false to treat it as a relative path. The base base provider Convert the file path to a string A fixed or relative path based on the current settings. Get a hash code for the file path object Returns the hash code of the value converted to lowercase. This is overridden to allow proper comparison of file path objects. The object to which this instance is compared. Returns true if the object equals this instance, false if it does not. This returns a clone of the object A clone of the object This is used to get the base path provider for the object. This returns the base path for the object If no has been specified, this returns the current directory. This is used to get or set the path to use. When set, if the path is not rooted (a relative path), is set to false. If rooted (an absolute path), it is not changed. This property always returns a fully qualified path but without any environment variable expansions.

If set to a null or empty string, the file path is cleared and is considered to be undefined. MSBuild environment variable references are also supported (i.e. $(DXROOT), $(OutputPath), etc.). FilePath path = new FilePath(); // Set it to a relative path path.Path = @"..\..\Test.txt"; // Set it to an absolute path path.Path = @"C:\My Documents\Info.doc"; // Set it to a path based on an environment variable path.Path = @"%HOMEDRIVE%%HOMEPATH%\Favorites\*.*"; Dim path As New FilePath() ' Set it to a relative path path.Path = "..\..\Test.txt" ' Set it to an absolute path path.Path = "C:\My Documents\Info.doc" ' Set it to a path based on an environment variable path.Path = "%HOMEDRIVE%%HOMEPATH%\Favorites\*.*"

This is used to retrieve the file path in a format suitable for persisting to storage based on the current settings. If is true, an absolute path is always returned. If false, the path is returned in a form that is relative to the path stored in the property.
This read-only property can be used to determine whether or not the file path exists. This read-only property is used to display the fully qualified path with environment variable expansions in the designer. This is used to indicate whether or not the path will be treated as a relative or fixed path when converted retrieved via the property. If true, the path is returned as a fixed path when retrieved. If false, it is returned as a path relative to the current value of the property. This event is raised when the persistable path is about to be changed. This event is raised when the persistable path changes This is a type editor that can display a folder browser dialog to allow selection of a folder path at design time. This can be used in conjunction with the to specify the folder browser dialog's properties. This is overridden to edit the value using a folder browser dialog. The descriptor context The provider The folder path as an object The selected folder path as an object This public enumerated type defines the build steps used when reporting progress during a build. The build has not yet started. Initializing to prepare for build. The working folder is about to be created or cleared. The builder is searching for Sandcastle and the HTML help compiler. The documentation source information is being validated and copied to the build folder. The shared content files are being generated. Generate the API filter for MRefBuilder The reflection information is being generated by MRefBuilder. Namespace summary information is being generated. The Visibility category properties are being applied to the reflection information file to remove unwanted items. All <inheritDoc /> tags are being expanded. The reflection information is being transformed by XslTransform. Help topic filenames are being altered. The standard help file content (art, scripts, and styles) is being copied to the help project folder. The conceptual content files are being copied. The conceptual content topic configuration files are being generated. The additional content files are being copied to the help project folder. The sandcastle.config Conceptual.config BuildAssembler files are being created. Custom build component configurations are being merged into the sandcastle.config file. The conceptual and additional content tables of contents are being merged. Conceptual help file topics are being generated by BuildAssembler. API reference help file topics are being generated by BuildAssembler. The intermediate table of contents is being generated by XslTransform. Title and keyword index information is being extracted for the Help 1.x TOC and index and/or website TOC. The format-specific table of contents is being generated by XslTransform. The table of contents is being updated with additional and conceptual content items and the default page is being determined. The help file index is being generated. The help project file is being generated. The help file project is being compiled. Generate full-text index for ASP.NET website search. The website files are being copied to the output path. The temporary help project files are being removed. The build has completed successfully. The build was canceled by user request. The build failed with an unexpected error. This is used to give a more descriptive message in the property grid for the project property. This is a type editor that displays the to edit the project summary. This is overridden to edit the value using the dialog. The descriptor context The provider The project summary text as an object The edited project summary text as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This attribute is used to associate folder dialog parameters with a class property for use in editing it in a property grid. Constructor The description for the folder dialog True to show the New Folder button or false to hide it. The root folder used to limit browsing. The default folder from which to start browsing. There are three overloads for the constructor. Constructor The description for the folder dialog The New Folder button is hidden and browsing starts at the desktop. Constructor The description for the folder dialog The default folder from which to start browsing. The New Folder button is hidden and browsing starts at the desktop. This is used to get the folder dialog description This is used to get whether or not to show the New Folder button This is used to get the root folder used to limit browsing This is used to get the default folder from which to start browsing This is a a simple derived list box in which you can refresh a specified item to show updates to the text displayed in the list box for the item. Refresh the specified item in the list box The index of the item to refresh This public enumerated type defines the type of links used to reference other help topics referring to items in the documented assemblies. No active links. Local links within the project using anchor tags. This is the default. This type is compatible with HTML 1.x and HTML 2.x help files. MS-Help style links for use within an HTML 2.x help file. This class is used to manage the set of known plug-ins. Load the plug-ins found in the .\Plug-Ins folder and its subfolders. This is used to determine if a plug-in exists with the specified key and can be used. The key for the plug-in True if the plug-in exits and can be used. This returns a dictionary containing the loaded plug-ins. The dictionary keys are the plug-in names. This task is used to run XslTransform.exe which is used to run various XSL transformations on the Sandcastle data files. Validate the parameters True if the parameters are valid, false if not This returns the full path to the tool The full path to the tool Generate the command line parameters The command line parameters This is overridden to return the working folder for the build The working folder for the build This read-only property returns the tool name (XslTransform.exe) This is overridden to force all standard error info to be logged This is overridden to force all standard output info to be logged This is used to pass in the path to the Sandcastle tools This is used to pass in the input filename This is used to pass in the output filename This is used to pass in the list of transformations to run Separate multiple transforms with a semi-colon. Relative paths are assumed to refer to Sandcastle transformations and will be fully qualified with the value. Absolute paths are assumed to be custom transforms and the path is not modified. This is used to pass in the working folder where the files are located. This is used to pass in any optional XSL transform arguments The optional XSL transform arguments in the form "argName=argValue". Separate multiple arguments with a semi-colon. This task is used to run BuildAssembler.exe which is used to generate help topics. Validate the parameters True if the parameters are valid, false if not This returns the full path to the tool The full path to the tool Generate the command line parameters The command line parameters This is overridden to return the working folder for the build The working folder for the build This read-only property returns the tool name (BuildAssembler.exe) This is overridden to force all standard error info to be logged This is overridden to force all standard output info to be logged This is used to pass in the path to the Sandcastle tools This is used to pass in the configuration filename This is used to pass in the manifest filename This is used to pass in the working folder where the files are located. This is used to give a more descriptive message in the property grid for the . This collection class is used to hold the additional content file editor definitions. Constructor There are two overloads for the constructor Clone the items in another collection to create this one. The collection to clone Add a range of items from another collection The range of items to add The entries are not cloned. Sort the collection by editor description Search the list of content file editors and launch the appropriate one for the specified file. The filename to edit The fully qualified name of the current project file. True if successful, false if not. can be used to obtain details if it does fail. If an editor is not defined, an attempt is made to launch the file using the OS shell with the Edit verb. This returns the reference to the global content file editor collection. If returns false, this can be used to retrieve the exception describing why it failed. This collection class is used to hold the table of contents entries for additional content items. Default constructor There are two overloads for the constructor Constructor The site map file associated with the collection. This is used to sort the collection All top level items and their children are sorted Convert the table of contents entry and its children to a string The entries in HTML 1.x help format Convert the table of contents entry and its children to a string in the specified help file format. The help file format to use The entries in specified help format This is thrown if the format is not HtmlHelp1x, HtmlHelp2x, or Website. This is used to convert the collection to a string and append it to the specified string builder. The help file format to use The string builder to which the information is appended. This is used to locate the default topic if one exists The default topic if found or null if not found The first entry found is returned. Nodes are searched recursively. This will remove excluded nodes from a TOC created off of the additional content items in a project. In addition, it merges the information from folder entries into the folder nodes. The parent node This is used to load the table of contents entries from the site map file associated with the collection. This is thrown if a site map has not been associated with the collection. This is used to save the table of contents entries to the site map file associated with the collection. This is thrown if a site map has not been associated with the collection. Find a TOC entry with the same source filename The source filename to match The match TOC entry or null if not found This is used by contained items to notify the parent that a child list changed and thus the collection should be marked as dirty. The item that changed Add all topics from the specified folder recursively to the collection and to the given project file. The folder from which to get the files The base path to remove from files copied from another folder into the project folder. On the first call, this should match the value. The project to which the files are added Only actual HTML content topic files are added. They must have a ".htm?" extension. Folders will be added as sub-topics recursively. If a file with the same name as the folder exists, it will be associated with the container node. If no such file exists, an empty container node is created. This is overridden to set the inserted item's parent to this collection. This is overridden to set the inserted item's parent to this collection. This is overridden to clear the parent on the removed item The index of the item to remove This is used to merge this TOC with another one The table of contents collection The base path provider This read-only property returns the project file item associated with the collection. This is used to get the default topic It returns the default topic or null if one is not set This is used to get the topic at which the table of contents is split by the API content. This will only be valid if it refers to a root level topic. It will return null if a split location has not been set at the root level. This is used to get the site map file associated with the collection. The type of file dialog to display Display a File Open dialog box Display a File Save dialog box This attribute is used to associate file dialog parameters with a class property for use in editing it in a property grid. Constructor The title for the file dialog The filter to use for the file dialog The type of file dialog to display There are two overloads for the constructor. Constructor The title for the file dialog The filter defaults to "All Files (*.*)|*.*" and the dialog type defaults to FileOpen This is used to get the file dialog title This is used to get the file dialog filter This is used to get the file dialog type This class is a wrapper for build items in the project. Build action Include item File reference hint path Linked item path Project GUID item Project name item Project COM object's GUID Project COM object's major version Project COM object's minor version Project COM object's wrapper tool Configuration setting Platform setting Output directory setting Image ID Alternate text Copy to media folder Exclude from table of contents Sort order Solution path (directory and filename) Solution directory Solution filename (no path) Solution name (no path or extension) Solution extension This constructor is used to wrap an existing project item. The project that owns the item The existing item There are two overloads for the constructor This constructor is used to create a new build item and add it to the project. The project that will own the item The type of build item to create The path to the item. This can be relative or absolute and may contain variable references. This is used to see if the project can be edited. If not, abort the change by throwing an exception. See if the named metadata item exists The metadata name for which to check True if present, false if not Get a metadata value from a project element The name of the metadata element to get The value of the metadata element Set a metadata value in the project item The name of the metadata element The value to store in the element Remove the item from the project Overload for equal operator The first element object The second element object True if equal, false if not. Overload for not equal operator The first element object The second element object True if not equal, false if they are equal. This is used to set or get the item name (a.k.a BuildAction) This is used to set or get the filename (Include attribute) This read-only property is used to get the containing project This represents an indexed XML comments file Constructor The name of the XML comments file to index Get the XML comments for the given key The key for the comments An for the comments or null if not found. Return all keys in this file A string array containing the keys This read-only property returns the comments filename This read-only property returns the number of items in the index This is a type editor that displays the to edit the build process plug-in configurations. This is overridden to edit the value using the dialog. The descriptor context The provider The plug-in configuration dictionary as an object The edited plug-in configuration dictionary as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This is used to give a more descriptive message in the property grid for the . This class is used to convert version 1.7.0.0 and prior SHFB project files to the new MSBuild format project files. Constructor The old project filename The folder in which to place the new project and its related files. This cannot be the same folder as the old project file. This is used to perform the actual conversion The new project filename on success. An exception is thrown if the conversion fails. Convert the additional content Convert the assemblies Convert the component configurations Convert the plug-in configurations Convert the namespace summaries Convert the API filter Convert the help attributes Convert the dependencies This is used to copy the files referenced in a site map file into the project and update the URLs in it to point to the new copies. The site map file to update. Get the XML text reader used for the conversion This represents a conceptual content topic. This class is serializable so that it can be copied to the clipboard. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a collection and we don't want to lose all items accidentally. This is used to see if the property should be serialized. True to serialize it, false if it matches the default and should not be serialized. We do not allow resetting this property as it is a collection and we don't want to lose all items accidentally. Constructor Mark the project as dirty if the contained lists change The sender of the event The event arguments This may not be the best way to handle this. This is used to load the topic information from the project file. The XML text reader from which the information is loaded. This is used to save the topic information to the project file The XML text writer to which the information is written. This is used to create the companion file used by the build component that resolves conceptual links. The folder in which to place the file The file will be named using the ID and a ".xml" extension. Write out the topic metadata The writer to which the metadata is written The build process This will recursively write out metadata for sub-topics as well. Write out the BuildAssembler manifest entry The XML writer to which the entry is written This will recursively write out entries for sub-topics as well. Convert the topic to its <link> element form Optional inner text The topic in its <link> element form Convert the topic to its <a> element form Optional inner text The topic in its <a> element form This is used to track the topic's parent collection This is used by the designer to move items around within the collection. This is used to get or set the topic file information related to the topic. If there is no topic file, this topic serves as a container node for its sub-topics and no content will be displayed for it when selected in the help file's table of contents. This read-only property returns true if there is no associated topic file by choice rather than it not being found. This is used to get the content ID from the content layout file. This should match an ID from a project file. If not, it will serve as an container node with no associated topic. This is used to get the unique ID of the topic This is used to get the topic's revision number This is used to get the filename of the related project file (if any) This read-only property is used to get the document type This is used to get the required title that should be used for the topic. If not set, the topic filename without a path or extension is used. This is used to get or set the topic's optional table of contents title. This can be used to provide a different topic title in the table of contents. If not set, it will be set to the value. This is used to get or set the topic's optional link text. This can be used to provide different text that is used in links that refer to the topic. If not set, it will be set to the value. This is used to get or set whether or not the topic is visible in the table of contents. If set to false, the item will still be added to the help file but to be accessible, a link to it must appear in one of the other topics. This is used to get the additional attributes that will be added to MAML topic. This is used to get the index keywords that will be added to the MAML topic. This read-only property is used to get a title for display (i.e. in the designer). If there is a specified, it is used. If not, the value is used. If it does not contain a value, the filename without the path and extension is used. If the file has not been specified, does not exist, the document type is not recognized, or it is invalid (i.e. badly formed), it returns an appropriate message describing the problem. This is used to get the sub-topics beneath this topic. This is used to when merging TOC files to determine the default topic. This represents a conceptual content image that can be used to insert a reference to an image in a topic. This class is serializable so that it can be copied to the clipboard. Constructor The build item to associate with the image reference. Convert the image reference to a <mediaLink> element. The image in its <mediaLink> element form Convert the image reference to a <mediaLinkInline> element. The image in its <mediaLinkInline> element form Convert the image reference to an <externalLink> element. The image in its <externalLink> element form Convert the image reference to an <img> element. The image in its <img> element form This is used to get the image filename This is used to get the full path to the image file This is used to get the unique ID of the image This is used to get or set whether or not to copy the image to the .\Output\media folder if it is not referenced in a media link. The default is false and the image will not be copied unless it is referenced in a media link. If set to true, the image will be copied even if it is not referenced. This is useful for forcing the copy of images referenced in external links which are not handled by the art reference build component. This is used to get or set the optional alternate text for the image This read-only property is used to get a title for display (i.e. in the designer). If there is specified, it is returned along with the filename and the image ID in parentheses. If not, the filename is returned along with the image ID in parentheses. This is used to get the file item associated with the image reference. This collection class is used to hold the additional content items for a project. Internal constructor The enabled state The configuration The owning project This is used to get or set the build component's enabled state If set to false, the component will not be used in the build. This is used to get or set the component's configuration information. This should be an XML fragment. The root node should be named configuration. This represents an assembly, an XML comments file, a Visual Studio Solution (C#, VB.NET, or J#), or a Visual Studio solution containing one or more C#, VB.NET or J# projects to use for building a help file. Wildcards are supported in the property. This is used to handle changes in the properties such that the source path gets stored in the project file. The sender of the event The event arguments Internal constructor The filename of the documentation source The configuration to use for projects The platform to use for projects True to include subfolders, false to only search the top-level folder. The owning project See if specified item equals this one The object to compare to this one True if equal, false if not For documentation sources, equality is based solely on the value. The configuration and platform settings are not considered. Get a hash code for this item Returns the hash code for the assembly path and XML comments path. Return a string representation of the item Returns the assembly path and XML comments path separated by a comma. This returns a collection of assemblies based on the specified wildcard. The wildcard to use to find assemblies. If true and the wildcard parameter includes wildcard characters, subfolders will be searched as well. If not, only the top-level folder is searched. A list of assemblies matching the wildcard This returns a collection of XML comments files based on the specified wildcard. The wildcard to use to find comments files. If true and the wildcard parameter includes wildcard characters, subfolders will be searched as well. If not, only the top-level folder is searched. A list of XML comments files matching the wildcard This returns a collection of MSBuild project filenames based on the specified wildcard. The wildcard to use to find solutions and projects. If true and the wildcard parameter includes wildcard characters, subfolders will be searched as well. If not, only the top-level folder is searched. A list of projects matching the wildcard. Any solution files (.sln) found are returned last, each followed by the project filenames extracted from it. Extract all project filenames from the given Visual Studio solution file. The Visual Studio solution from which to extract the projects. The collection used to return the extracted projects. This is used to get or set the project configuration to use when the source path refers to a Visual Studio solution or project. If not set, the configuration value from the owning help file project will be used. This will be ignored for assembly and XML comments file entries. This is used to get or set the project platform to use when the source path refers to a Visual Studio solution or project. If not set, the platform value from the owning help file project will be used. This will be ignored for assembly and XML comments file entries. This is used to set or get the documentation source file path Wildcards are supported. If used, all files matching the wildcard will be included as long as their extension is one of the following: .exe, .dll, .*proj, .sln. This is used to get or set whether subfolders are included when searching for files if the value contains wildcards. If set to true and the source file value contains wildcards, subfolders will be included. If set to false, the default, or the source file value does not contain wildcards, only the top-level folder is included in the search. This returns a description of the entry suitable for display in a bound list control. This is a simple derived label control that draws the label text followed by a dividing line to the right of the text. Constructor This is overridden to draw the text and the dividing line The event arguments This collection class holds execution point information for a plug-in process. This is used to determine if the collection contains an entry for the specified build step and behavior. The build step The behavior True if the collection contains an entry for the specified build step and behavior or false if it does not. This is used to obtain the execution priority for a plug-in in the given build step and behavior. The build step The behavior The execution priority is used to determine the order in which the plug-ins will be executed. Those with a higher priority value will be executed before those with a lower value. Those with an identical priority may be executed in any order within their group. This represents an HTML Help 2.x index keyword that can be added to the XML data island in each help topic generated by BuildAssembler. Constructor The index name defaults to "K" Constructor The index name The index term Compares this instance to another instance and returns an indication of their relative values. A MSHelpKeyword object to compare Returns -1 if this instance is less than the value, 0 if they are equal, or 1 if this instance is greater than the value or the value is null. Entries are sorted by name and then value Get a hash code for this item Returns the hash code for the index name and term. Return a string representation of the item Returns the item in its XML format This is used to get or set the index name This is used to get or set the index term This class is used to represent a folder path. Support is included for treating the path as fixed or relative and for expanding environment variables in the path name. This can be used to find out if a path is terminated with a trailing backslash. The path to check Returns true if it is, false if it is not. This can be used to ensure that a path is terminated with a trailing backslash. The path to check The path with a trailing backslash added if necessary. This is used to prevent the Path property from showing as modified in the designer. Always returns false The property is mainly for display purposes in the designer but can be used for making changes to the expanded path if needed. The property is used as the display value in the designer. Default constructor. The folder path is undefined. The base path provider There are three overloads for the constructor. Constructor. Assign the specified path. A relative or absolute path. The base path provider Unless is set to true, the path is always treated as a relative path. Constructor. Assign the specified path and fixed setting. A relative or absolute path. True to treat the path as fixed, false to treat it as a relative path. The base path provider This is used to get or set the path. When set, if the path is not rooted (a relative path), is set to false. If rooted (an absolute path), it is not changed. This property always returns a fully qualified path but without any environment variable expansions and terminated with a trailing backslash if needed.

If set to a null or empty string, the folder path is cleared and is considered to be undefined. FolderPath path = new FolderPath(); // Set it to a relative path path.Path = @"..\..\ProjectFolder"; // Set it to an absolute path path.Path = @"C:\My Documents\ProjectDocs\"; // Set it to a path based on an environment variable path.Path = @"%HOMEDRIVE%%HOMEPATH%\Favorites\"; Dim path As New FilePath() ' Set it to a relative path path.Path = "..\..\ProjectFolder" ' Set it to an absolute path path.Path = "C:\My Documents\ProjectDocs\" ' Set it to a path based on an environment variable path.Path = "%HOMEDRIVE%%HOMEPATH%\Favorites\"

This read-only property can be used to determine whether or not the folder path exists.
This is a type editor that displays the to edit the API filter items for a project. This is overridden to edit the value using the dialog. The descriptor context The provider The API filter collection as an object The edited API filter collection as an object This is overridden to specify the editor's edit style The descriptor context Always returns Modal as long as there is a context and an instance. Otherwise, it returns None. This collection class is used to hold the additional content items for a project. This raises the event. The event arguments The dictionary doesn't raise events automatically so this is raised manually as needed. Default constructor The project that owns the collection This is used to load existing component configuration items from the project file. The component items The information is stored as an XML fragment This is used to write the component configuration info to an XML fragment ready for storing in the project file. The XML fragment containing the component configuration info. Add a new item to the dictionary The component ID True for enabled, false disabled The component configuration The added to the project. If the ID already exists in the collection, the existing item is returned. The constructor is internal so that we control creation of the items and can associate them with the project. This is used to get or set the dirty state of the collection This event is raised when the dictionary is modified