Change Set Date Downloads Comment
34004
by davedev
Jun 16 2008 at
5:09 AM
803 This changeset corresponds with the 1.11.0 Release Candidate.

- Fixed an issue whereby editing external XML documentation in source mode and then saving would write special doc tags into a namespace that is ignored by Sandcastle; for example, <see> links would not appear in the topics.
[http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=17049]
- Rebuilt the installer from the latest changeset and replaced it on the Releases page for 1.11.0 RC.
33943
by davedev
Jun 14 2008 at
1:33 AM
10 This changeset corresponds with the 1.11.0 Release Candidate.

- Fixed an issue where the root Namespaces node wasn't being displayed in Topic Explorer when only one namespace was being documented.
- Rebuilt the installer from the latest changeset and replaced it on the Releases page for 1.11.0 RC,
33935
by davedev
Jun 13 2008 at
3:43 PM
5 This changeset corresponds with the 1.11.0 Release Candidate. It contains a few bug fixes and some updates.

- DocProject.SED file removed from source control since it's automatically generated when the Installer project is built.
- Fixed bug in HtmlToXmlConverter that caused the XML documentation editor to move special comment end tags like </see> and </para> to the very end of the section.
- Hard-coded the version attribute in the DocProject.AddIn files for both versions of VS since it doesn't have to be generated during the installation.
- Fixed bug in the installer so that when installing for Everyone and both VS 2005 and 2008 simultaneously, the DocProject.AddIn files will have distinct names so that one doesn't overwrite the other.
33856
by davedev
Jun 9 2008 at
3:38 AM
27 TFS failed to check-in multiple files, like normal. This changeset adds them - it corresponds to the 1.11.0 Release Candidate.
33855
by davedev
Jun 9 2008 at
3:29 AM
16 This changeset corresponds with 1.11.0 Release Candidate.

Version Updates

- Installer = 1.11.0
- DaveSexton.DocProject = 1.11.0.0
- DaveSexton.DocProject.InstallPrep = 1.4.0.0
- DaveSexton.DocProject.DeploymentSandcastle = 1.3.1.0
- DaveSexton.DocProject.Sandcastle = 1.6.0.0
- DaveSexton.DocProject.ExternalUI = 1.2.0.0
- DaveSexton.DocProject.DocSites = 1.0.1.0
- DaveSexton.Controls.HtmlEditor = 2.0.0.0
- DaveSexton.Controls.XmlTreeView = 1.0.1.0
- DaveSexton.Sandcastle = 1.0.0.1
- DaveSexton.DocToMaml = 1.0

Notable Breaking Changes

- The DocProjectBuildPath environment variable has been deprecated, although it's still created by the installer in the release only - in the 1.12.0 Production release it won't be created. The DocProjectPath environment variable is now used in place of DocProjectBuildPath, but it points to the root installation folder. To reference the bin directory, for example, you must now use %DocProjectPath%\bin. DocProject's internal files and settings have been updated, including the new project templates.
- Keys in the versions.xml file that were generated using full source paths are no longer valid and should be removed from the file. For example, full paths are used for all project references; however, external sources that use relative paths are still valid.
- ReferenceInfo has been superseded by a new struct named, SystemPath. SystemPath is used in other places as well to constrain strings to valid local paths, which can specify a file or directory and have wildcards, including directory recursion.
- All paths are now saved relative to the project directory, but are fully qualified while being used by the application. Technically, this should not be a breaking change since the new SystemPath structure can handle absolute and relative paths as input, but it's mentioned here just in case it does affect older DocProjects and DocSite settings that might be imported into new projects. Manually making absolute paths relative should fix any problems.
- BuildEngine.ProjectItems property renamed to BuildItemsInternal and a new BuildItems property has been added to take the place of the UpdatedProjectItems property.
- Topic.Title property renamed to TocTitle (DaveSexton.DocProject.Sandcastle.TopicManagement namespace)
- SandcastleSettings.ConceptualTopicsDirectory property renamed to TopicsDirectory (likewise for the relative path equivalent).
- KeyedDocProjectItemCollection class renamed to DocProjectItemCollection.
- BuildSettings.Targets property was changed from string to IEnumerable<string>.
- The behavior for detecting out-of-date sources and files has changed. Timestamps are no longer cached. Instead, DocProject compares the current timestamps of input to the value of a new virtual property, BuildEngine.LastBuild, which, by default, gets the earliest "last write" DateTime of all of the files returned by the BuildSettings.Targets property. BuildEngine.SourceAssembliesDirty has also been replaced by a new virtual method named, HasChangedSince. Since the build state is now controlled by the outputs' last write times, an effect is that deleting the .chm or .HxS files no longer causes a partial build; it causes a full build instead. Another effect is that each time a project is opened in VS it doesn't neseccarily require a full build - it may even perform a partial build. Also, individual conceptual and HTML topics are monitored to detect whether changes have been made.
- DocProjectItemBase contract has changed. It now uses the new SystemPath class and does not provide functionality for storing timestamps. Also, relative paths are no longer supported (note: this has no negative effect when the same project is built on multiple systems with different root paths since built items are loaded dynamically - they are not persisted).
- The build engine now refreshes itself (i.e., checks file write times and reads the ProjectItems property) _after_ the project options are saved. This is required now that the Sandcastle build engine adds every file in the conceptual TOC to the project items collection, since the topics.xml file is opened directly and it may not be up-to-date until the project options are saved.
- BuildState.Preparing enum value no longer exists.
- A Source structure replaces the ExternalSource class. It is also used by IProjectOutput to encapsulate a project reference, which consists of an assembly and an optional XML documentation file.
- Generate root API topic is now enabled by default in new DocProjects and DocSites.
- Added "/ranu /rootsuffix Exp" to the devenv.exe command arguments on the Debug tab for the Add-In project so that the VS 2008 Experimental Hive will be used when debugging.

Bug fixes:

- When only building conceptual help, DocProject does not detect that topics have been added and will report that the help build was skipped because there are no project sources.
- The value of the DaveSexton.DocProject.Sandcastle.ReflectionApiElement.HasMethodOverloads property is not being set so it always returns false.
- Ineritance filter does not work correctly with local filtering enabled. Also, the UI does not display the correct default value for "include prefixes".
- The Topic Designer does not commit changes (at least not in exclusive source mode) when another item gets the focus.
- Topic Editor does not save external XML documentation for sections that were empty when a save operation occurred for the first time; i.e., subsequent saves do not persist elements that were previously empty.
- Topic Editor saves empty attributes; e.g., if seealso is added then both cref and href are always saved, even if only one is specified.
- VS crashes silently when a project is checked in and an attempt is made to delete a conceptual topic in Topic Explorer. (This is just one example of issues that can occur when working with source-controlled items.)
- Conceptual topic import feature does not use the same GUID when importing topics, which breaks existing conceptual links in topics that reference it. Also, it uses the full path as the TOC title when it should only be using the file name.
- ResolveExternalLinksComponent editor for the FileUrlMappingProvider class ignores all changes after losing input focus.
- Clicking the next button on a few of the New Project Wizard steps before the steps have actually initialized their edit control causes an exception.
- Filtering one or more conceptual topics without building reference (API) documentation causes an exception while compiling help.
- Build Component collection dialog will have corrupted state when a component is deleted from the list by pressing the Delete key (the Delete button works fine, however).
- Whitepaper template; fix spelling error: <downloadCenterLink> Optiona </downloadCenterLink>
- Imporoved all of the MAML topic templates.
- Cannot enter period character into External sources dialog.
- Cannot manually remove External source grid rows (without deleting the text and having the dialog delete empty rows automatically after clicking OK).
- Importing a file from the Topics folder into the same project crashes Visual Studio.

Features and Updates:

- Support for the Sandcastle May 2008 Release.
- A default snippets file is automatically included in new DocProjects and DocSites: Help\Settings\conceptual_snippets.xml. A reference to the file is added to ExampleComponent in the conceptual configuration files.
- A default tokens file is automatically included in new DocProjects and DocSites: Help\Settings\tokens.xml. A reference to the file is added to the tokens SharedContentComponent in all configuration files.
- A default external links file is automatically included in new DocProjects and DocSites: Help\Settings\links.xml. A reference to the file is added to the ResolveExternalLinksComponent in all configuration files.
- A default bibliography file is automatically included in new DocProjects and DocSites: Help\Settings\bibliography.xml. The Sandcastle Styles patch is required to support this feature. (http://www.codeplex.com/SandcastleStyles)
- A global Help 2.x metadata file is automatically included in new DocProjects and DocSites: Help\Settings\metadata.xml. A reference to the file is added to the ResolveExternalLinksComponent in all configuration files.
- New management dialogs for Help 1.x and Help 2.x project configuration. Various settings are persisted to files in Help\Settings\Projects\, Help\Topics\Html\MSHelp2\ and the root Help\ folder.
- All of the conceptual topic files found in the topics.xml file are added to the ProjectItems collection so that any modifications to the files will automatically cause a full build to occur. The same goes for raw HTML files found in the Help\Topics\Html\ folder, recursively. (Modifying the topics.xml file itself still causes a full build.)
- Automatic checkout of source-controlled project items (files and folders) to prevent issues where VS would crash silently due to file access errors. Automatic checkout occurs whenever a project option or dialog must write to a file in the project.
- Import Topics and Settings step added to the New Project Wizard. It allows you to browse for another project file, which is then loaded with MSBuild and exmained for its DocProject and Sandcastle version project options (defaults to 0.0.0.0) and Sandcastle presentation style information. When the New Project Wizard is finished, all topics, project options and settings are imported; although, some files may be taken from the Sandcastle installation if they are newer. When it's done a dialog that lists all messages accumilated during the operation is shown.
- Management dialog for external sources added to the last step of the New Project Wizard.
- New class: DaveSexton.DocProject.DocProjectFileGroup. Provides the ability to group multiple build item files together so that the base contract applies to all of them at once, while only a single item appears in the build items dialog.
- ResolveExternalLinksComponent now works for conceptual builds and is automatically added to the conceptual configuration files when a new DocProject or DocSite is created.
- XML that is appended to the configuration files when they are being imported is formatted nicely instead of being inserted as one long string.
- Added inheritdoc tag to the DocProject configuration file so that it appears in the Topic Editor sections list.
- Conceptual config files: The first SharedContentComponent is transformed so that a token file is found in the Help\Settings (This file is just a regular content item file that can be used with the <token></token> element.)
- Update project option descriptions (e.g., Topic Management).
- Update the example in conceptual_art.xml so that it includes a leading <para> and the outer <mediaLink> tag.
- Add an "open in VS" command to the DocProject External UI.
- New Topic Explorer context menu commands: "Properties", "Copy as reference link", "Copy as conceptual link" and "Copy a topic identifier".
- New Topic Properties window provides a UI for editing conceptual topic metadata, such as Help 2.x DocSet attributes, keywords and a display title.
- Topic import feature should check to make sure that the topic's root element is a topic tag with an id, and that the id is the same as the in-memory GUID. If not, it should add/update it.
- Add DocProject and Sandcastle version project options, as read-only. Save it as part of the project's UserProperties. (e.g., project.Settings["..."])
- Topic import feature adds multiple selections as siblings, instead of recursively adding children.
32945
by davedev
Apr 20 2008 at
11:42 PM
1 DELETED ALL CONTENT
30985
by davedev
Feb 27 2008 at
11:15 AM
209 ** This changeset corresponds with 1.10.1 Release Candidate, but it's probably incomplete. I highly recommend using the source code provided by DocProject's installer, which can be found in the installed "Source" folder.

Version Updates

- Installer = 1.10.1
- DaveSexton.DocProject = 1.10.1.0
- DaveSexton.DocProject.InstallPrep = 1.4.0.0
- DaveSexton.DocProject.DeploymentSandcastle = 1.3.1.0
- DaveSexton.DocProject.Sandcastle = 1.5.1.0
- DaveSexton.Controls.HtmlEditor = 1.1.1.0
- DaveSexton.Controls.XmlTreeView = 1.0.1.0
- DaveSexton.DocProject.ExternalUI = 1.2.0.0
- DaveSexton.DocProject.DocSites = 1.0.1.0
- DaveSexton.Sandcastle = 1.0.0.1

Updates:
- In the DaveSexton.DocProject.dll.config file's sandcastleConfigChanges section, the "insert" attribute used on individual changes has been renamed to "insertAfter" and support for a new attribute named, "insertBefore" was added.
- ResolveExternalLinksComponent is now included automatically in imported sandcastle.config files for each of the three built-in Sandcastle presentation styles.
- ResolveExternalLinksComponent now supports <seealso> tags as well as <see>.
- New class: DatabaseUrlMappingProvider is a built-in mappings provider for ResolveExternalLinksComponent that can be used with any of the supported database connection types in the FCL; e.g., ODBC, OLE-DB or SqlClient.
- Added DaveSexton.DocProject.Sandcastle.Topic.IsMember property.
- Sandcastle's MRefBuilder apiFilter at some point began to support default exclusion of types with explicit inclusion of individual members. The TopicManager class has been refactored to serialize the smallest amount of configuration necessary to achieve the selected filter for members (it already does this for the namespace->type boundary).
- The appropriate identifier for nested types (i.e., the qualified name) is now serialized for MRefBuilder's API filter.
- Refactored ResolveExternalLinksComponent and the Hosted Sandcastle Build Component Item Template to decouple host services from the configuration class using *Host class specializations.
- ResolveExternalLinksComponent uses an ordinal, case-insensitive comparison for mapping IDs.
- ResolveExternalLinksComponent renders an xref or vref as <span class="nolink">{id-or-xml}</span> (with a preference for inner XML) if it does not correspond with a mapping. (Previously <see/> was left alone to be removed by another component later in the stack.)
- ResolveExternalLinksComponent editor can now edit component-level attributes; e.g., base and target.
- Bug fix: SandcastleBuildComponent.SaveConfiguration method does not delete component-level attributes when they have been deleted by a component's editor.
- Other bug fixes and refactored code.
30750
by davedev
Feb 18 2008 at
7:21 PM
33 ** This changeset corresponds with 1.10.0 Release Candidate, but it's probably incomplete. I highly recommend using the source code provided by DocProject's installer, which can be found in the installed "Source" folder.

New Project:

- DaveSexton.Sandcastle = 1.0.0.0

This project builds a new Sandcastle Build Component: ResolveExternalLinksComponent

https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=DocProject&ReleaseId=10831
30538
by davedev
Feb 10 2008 at
3:23 PM
23 This changeset fixes two insignificant bugs in the 1.10.0 RC deployment:

1. IfThenComponent stack editors were not opening for the Then and Else properties.
2. Build Assembler trace output contained extra, unimportant information with TraceInfo enabled, and with TraceAll enabled it was missing important information.

Note that this changeset is probably still incomplete though, so I still recommed using the source code copied by the installer to the "Source" folder instead.
30531
by davedev
Feb 9 2008 at
2:51 PM
17 ** This changeset corresponds with 1.10.0 Release Candidate, but it's probably incomplete. I highly recommend using the source code provided by DocProject's installer, which can be found in the installed "Source" folder.

Version Updates

- Installer = 1.10.0
- DaveSexton.DocProject = 1.10.0.0
- DaveSexton.DocProject.InstallPrep = 1.4.0.0
- DaveSexton.DocProject.DeploymentSandcastle = 1.3.1.0
- DaveSexton.DocProject.Sandcastle = 1.5.0.0
- DaveSexton.Controls.HtmlEditor = 1.1.1.0
- DaveSexton.Controls.XmlTreeView = 1.0.1.0
- DaveSexton.DocProject.ExternalUI = 1.2.0.0
- DaveSexton.DocProject.DocSites = 1.0.1.0

Bug Fixes
- Deleting a comment section (XmlCommentSectionContentItem) causes an exception to be thrown when the API Topic Management dialog is closed. All unsaved changes are lost.
- Deleting a comment section does not mark the content item as dirty, so if it's the only change that's made it's not committed when the dialog is closed.
- The "Cancel" and "Back" buttons cause control validation on the Wizard Form, but they shouldn't.
- DocProjectEnvironment.InstallVSExtensions adds the same commands and toolwindows to the commands and toolwindow collections even if they're already present.
- DocProject Properties window may be added to the wrong Project command bar, depending upon the Environment.
- IndexEntry.IncrementOccurrences(int addOccurrences) method doesn't include the current weight when constructing the return value. It should be noted however that this overload is not actually being used in DocProject currently.
- Clicking the "make relative" button on the new record in the External Sources dialog causes an unhandled exception.
- When preparing to build if the Html directory contains a large number of files then while they are being deleted the UI isn't updated so it appears that the build hasn't started and that VS froze. Instead, the UI should show the build progress up to the current point.
- Performance is very poor in build steps that write a lot of information to the build output window (e.g., Build Assembler Step).
- DocProjectOptionsEditorBase<TOptions> called AfterEdit twice in a row if an exception occurred while editing and the first call to AfterEdit returned true.
- Assigning BuildType on a new BuildContext and then passing it to the BuildEngine.Build method does not work since it's overwritten with the BuildEngine's BuildType value. This causes the Rebuild command in VS to function improperly.
- Canceling a build may cause the next build to be skipped instead of retrying with the last build type (e.g., full or partial).
- Adding, removing or changing a source should cause a full build the next time the project is built.
- The missing dependencies list is ignored when multiple source versions are specified using the Version Management dialog.
- Errors may occur at various times when the only source project has not been built yet (i.e., there's only one reference to a project but its assembly does not exist).

Updates
- Added a small margin around the grid in the build componnent editor dialog.
- Installer\PostBuildEvents now contains a batch file for each project instead of having the commands hard-coded in the properties window.
- ToolWindowCollection now checks for duplicate GUIDs when an item is added or set, and it throws an exception if duplicates are found.
- IAnyProject.IsSaved property implementations must be assignable now.
- MSBuildProjectItem.Hide and VSProjectItem.Hide implementations no longer require the item to exist on disc (they can be removed from the project regardless).
- IdeEventListener now binds to the solution's AfterClosing event instead of BeforeClosing in case the user cancels the operation.
- XML Documentation is only merged by the SandcastleBuildEngine class during full builds only.
- TopicFilter now throws a more meangingful exception instead of NullReferenceException when an invalid type reference is found in a dynamic filters file.
- Renamed ContentItemAttributeType to TopicSectionAttributeType
- Renamed XmlCommentSectionAttributeData to XmlCommentSectionAttribute and XmlCommentSectionContentItemAttributeData to XmlCommentSectionContentItemAttribute.
- Created interfaces: IXmlTopic, ITopicSection and ITopicSectionAttribute, used for adapting XML-based content items into the XML content editor with more flexibility (in preparation for the ability to edit conceptual content).
- Created class XmlConceptualTopic : IXmlTopic
- Renamed XmlCommentSection.Multiple property to AllowMultiplePerTopic
- Removed ContentItemEditModes.Subsections value since the ContentItem.Subsections property may be used to determine whether subsections are required. The edit mode can then be used to determine whether the parent item itself supports design or source modes (if applicable).
- Added templates for Sandcastle conceptual content to the InstallPrep\Sandcastle\Templates\Conceptual folder. Each individual XML file is copied by the installer to the {target}\Sandcastle\Templates\Conceptual directory.
- Added ContentItem.IsValueEditable property, which returns true if both the Design and Source flags are set.
- ContentItem.Value property does not use null anymore. Instead, if string.Empty is assigned and the current value is null then no action is taken. Also, the get accessor will return an empty string if the actual value is null.
- DocProjectOptions.BuildEngineProviderNameChanged event no longer exists and its corresponding property is no longer assignable.
- SandcastleProjectOptions.PresentationName is no longer assignable.
- Added WizardForm.Error event and WizardForm.SupressExceptions property; when true it causes the Error event to be raised in the case of an exception thrown by the WizardController.Finish method.
- Refactored VSWizard to pass an error event handler for the WizardForm so that all UI exceptions may be logged and displayed in a message box; otherwise, exceptiosn within UI-invoked call stacks are ignored by Visual Studio.
- FlagsDisplayNameAttribute now derives from DisplayNameAttribute and is no longer sealed.
- Updated EnumFlagsConverter to handle attributes more appropriately.
- New enum type and SandcastleProjectOptions property: BuildAssemblerOptions. Provides options for controlling Build Assembler behavior, performance and diagnostic output.
- Added DocProjectEnvironment.HostChanged event, which is raised then the Host property is set durining initialization (it can only be set once though).
- Refactored BufferedSettingsDictionaryBase<TKey, TValue>.Read method to return the specified default value if the buffered value exists and is null.
- Removed DocProjectOptions methods: CopyTo, Cancel and Commit. Added: Save.
- Removed DocProjectOptions properties: CommitChangesImmediately and HasChanges. Added: BufferChanges in place of CommitChangesImmediately (although it's got the opposite value).
- Removed DocProjectOptions event: ProcessComponentTypeNameChanged. (The property sets the BuildType to Full if it changes - that was the only purpose for having the event in the first place)
- DocProjectOptions refactored so that all properties use project.Settings as a backing store and do not support buffering changes via the options class itself. (Buffering can still be enabled temporarily though, such as in the Tools Options page, by setting project.Settings.UseBuffer to true while the dialog is opened.)
- EnumFlagsConverterBooleansAttribute renamed to BooleanValuesAttribute.
- New class, BooleanStringConverterAttribute, which converts the values of a boolean property to and from strings specified by its BooleanValuesAttribute.
- New project option property, SandcastleProjectOptions.GenerateRootApiTopic, which builds the root Namespaces topic when it's true and builds a flat TOC when it's false.
- Added property: IEnvironmentHost.Status { get; set; }
- VSEnvironmentHost.SetStatus method changed to a read/write property called Status.
- Renamed external UI's ProgramForm.BuildStatusText property to just, Status.
- Refactored IdeEventListener by adding new event handlers and updating existing ones to use the new save semantics for projects.
- Improved error handling in IdeEventListener class (exceptions in event handlers are logged and displayed to the user).
- Removed BuildController.GetProject method.
- Renamed BuildController methods: GetBuildEngine to GetEngineForProject, AddProject to AddEngineForProject, RemoveProject to RemoveEngineForProject and HasProject to HasEngineForProject.
- New method: DocProjectEnivornment.GetDocProject
- Added support for caching IDocProject instances to the DocProjectEnvironment class. Also, refactored IdeEventListener to allow the environment to manage projects instead of the BuildController, which now only manages engines.
- Added configuration properties: PathsElement.Schemas and ProjectPathsElement.RelativeSchemasPath (schema element), which are used to import conceptual content schemas into new DocProjects.
- New static method: BuildEngine.GetBuildTypeWithPrecedence.
- Renamed DaveSexton.DocProject.Sandcastle.TopicManagement.ApiTopic* classes to just Topic* (i.e., removed the Api prefix)
- New IDocProject events: ReferenceAdded, ReferenceRemoved and ReferenceChanged.
- New DocProjectEnvironment events: ProjectReferenceAdded, ProjectReferenceRemoved, ProjectReferenceChanged.
- ExternalSourceComparer constructor made private; added "Default" property (singleton)
- New interface: DaveSexton.DocProject.Sandcastle.TopicManagement.ITopicFilter
- Refactored classes related to TopicFilters to use the new ITopicFilter interface instead of an abstract base class.
- SettingsDictionary.ChangeType now supports conversion between IEnumerable<string> and ICollection<string> to/from string, using StringCollectionConverter and its default settings.
- Lots of changes to the topic filters tab on the topic management dialog; e.g., completely refactored so that most of its functionality is dynamic, new user controls to encapsulate filter editors, new classes, new interfaces, etc.
- SourceVersion.GenerateKey method now uses an MD5 hash converted to GUID format instead of a base64 SHA1 hash. This means that previous versions.xml files are no longer compatible with DocProject.
- Memory is now forcefuly collected (GC.Collect) after the Build Assembler step is executed since its AppDomain is unloaded anyway - all references are no longer in use. In testing, the reduction in memory consumption was profound.
+ more
28318
by davedev
Nov 7 2007 at
6:30 PM
167 ** This changeset is probably incomplete. I highly recommend using the source code provided by DocProject's installer, which can be found in the installed "Source" folder.

Version Updates

- Installer = 1.9.0
- DaveSexton.DocProject = 1.9.0.0
- DaveSexton.DocProject.InstallPrep =
- DaveSexton.DocProject.DeploymentSandcastle = 1.3.0.0
- DaveSexton.DocProject.Sandcastle = 1.4.0.0
- DaveSexton.Controls.HtmlEditor = 1.1.0.0
- DaveSexton.DocProject.ExternalUI = 1.1.0.0
- DaveSexton.DocProject.DocSites = 1.0.0.0

New Projects

- DaveSexton.Controls.XmlTreeView = 1.0.0.0

Bug Fixes

- DataGridViewFileCell class added its Button before its TextBox so the TextBox, which uses DockStyle.Fill, was partially hidden behind the Button, which used DockStyle.Right.
- BuildContext.CurrentStepIndex and related properties do not take into account skipped steps.
- Build Process Components can now read dynamic enumerator properties such as VSDocProject.Sources.
- DaveSexton.DocProject.targets file incorrectly defined the compiled help output using the Output attribute of the Target element. Instead, it's now defined correctly and a new item group named, "CompiledHelpFiles" is defined using the Output element. The group will contain the full paths to the .chm and .HxS files, depending upon the configured output settings.
- Improved error-handling in the IDTCommandTarget implementation so that query and execution errors are logged instead of being swalled by Visual Studio.
- DocProject.exe will now prompt the user continuously each time they attempt to close the form while a build is in progress. Previously, the second attempt to close the form would always result in an exception if the build hadn't stopped yet.
- Improved the performance of the Api Topic Management dialog, including the Regular Expression and Categorical filters.
- BufferedSettingsDictionaryBase Read<T> method did not check IsCommitted before calling GetComittedValue. When false, defaultValue must be returned immediately.
- Improved full-text search index generation performance for the DocSite templates.

Feature List

- Supports the Sandcastle October 2007 CTP.
- Preliminary support for conceptual content using Sandcastle's conceptual configuration file. (The conceptual build process has been integrated although it hasn't been tested and DocProject does not automatically generate a conceptual TOC yet.)
- First-class support for managing Sandcastle configuartion files and hosting custom build component editors within the DocProject Properties window and the [DocProject External UI].
- Version Management Dialog: Create documentation with version information by referencing external assemblies or reflection files and enter custom version names (DocProject uses Sandcastle's *VersionBuilder* program in the background and auto-generates the supporting files.)
- *ChmBuilder* is used exclusively to build the supporting Help 1.x files (WARNING: The .HHC file format has changes. Beware if you were modifying it to include custom topics.)
- Filter topics by API accessiblilty; e.g., protected fields, private interfaces, public or protected methods and delegates, etc.
- Save filters in the API Topic Management dialog and load them later or have them applied automattically during builds (dynamic filters).
- Edit all content item documents using the Topic Designer instead of just the shared_content.xml file.
- Author external XML documentation in the appearance of the selected presentation style, with special styles for XML documentation tags such as see, c, code, paramref, etc.
- Drag an API node into the XML documentation editor from the tree and a <see> link will be created automatically (works in both source and design modes).
- The appropriate XML documentation sections for each specific API type are listed automatically in the XML documentation editor, including individual param and typeparam tags.
- Quickly create custom XML documentation sections in the editor or register them as built-in sections in DocProject's configuration file (See this blog post for information on how to use custom tags.)
- DocSite templates include four new buttons under the Contents tab: Save, Bookmark, Email, Print. The latter two are supported in IE6, IE7, Firefox and Opera, but the former two are only visible in IE. Note that Save currently does not download supporting files such as JavaScript or style sheets though.
- DocSite performance generating the full-text search index has been _greatly_ improved.
- Build Process Components can now take advantage of more of DocProject's API and now have the ability to inject dynamic build steps and use cross-AppDomain delegates without the assembly being loaded into the default AppDomain.
- Documentation now includes a root Namespaces topic to which the XML documentation's project summary is applied.
- The XML documentation editor automatically cleans up empty sections from the external documentation when it's saved.

New / Refactored

(This is only a partial list of changes)

- DocProjectOptionsDialogEditorBase<TOptions, TForm> class created to make implementing property dialogs easier on DocProjectOptions and derived types.
- DataGridViewFileCell selects the all of the text when the TextBox receives focus.
- SandcastleSettings.VersionsFile property added: return Path.Combine(TargetDirectory, "versions.xml")
- New BuildContext properties: SkippedSteps, SkippedStepsCount, SkippedOptionalStepsCount and SkippedRequiredStepsCount.
- BuildContext.ExecutedAllSteps property renamed to SuccessfullyExecutedAllRequiredSteps, which now returns value that takes into account skipped steps.
- New classes: MarshalByRefEnumerable<T> and MarshalByRefEnumerator<T>. The former is used by properties such as VSDocProject.Sources to ensure that BPCs can read them.
- New class, DynamicBuildStep, is an IBuildStep implementation that simply executes a delegate when the Execute method is invoked on the step. This can be used by BPCs.
- New class, RemoteDelegateProxy, substitutes a delegate with one that is defined in DaveSexton.DocProject.dll so that it can be marshaled to the default AppDomain from a BPC.
- New BuildProcessComponent "Invoke" overloaded methods use the new RemoteDelegateProxy class for invocation.
- New BuildProcessComponent methods: AddBuildStep, InsertBuildStep, InsertBeforeBuildStep and InsertAfterBuildStep use the DynamicBuildStep and RemoteDelegateProxy classes internally.
- Apply doc model build step now runs in the background since it can take a long time in large documentation sets.
- New SandcastleSettings.DynamicFiltersFile property returns the full path to a file named, "dynamicfilters.xml" that is located in the configuration folder (with MRefBuilder.config, for example).
- The Api Topic Management dialog now displays the different topic filters in a tab control.
- The Api Topic Management dialog has a new tab named, "Saved Filters", which provides a GUI for the "dynamicfilters.xml" file. This file is parsed during each build and is used to filter the reflection.org file that is generated by MRefBuilder before continuing (Note: the filter is actually applied after the reflection file is merged with external reflection.org sources).
- New classes, ReflectionDocument and ReflectionApiElement can parse reflection.xml files (or reflection.org files). They are used during builds for the new dynamic filters feature.
- Refactored the ApiTopicManagement class to use the new ReflectionDocument and ReflectionApiElement classes, which has increased the Api Topic Management dialog's overal performance when loading topics and applying regex and categorical filters.
- Refactored the Api Topic Management dialog: The regex and category filters are now contained in tabs, with an additional tab for "Saved Filters".
- Api Mgmt Dialog: Topic filters have a Save button that adds them to the "Saved Filters" list.
- Api Mgmt Dialog: The new "Saved Filters" list has check box column that indicates whether each filter will be applied automatically during each build. (These have been named, "dynamic filters" and are stored in the project's "Help\dynamicFilters.xml" file, which is optional.)
- New SandcastleSettings properties: RelativeGeneralTopicsDirectory and GeneralTopicsDirectory, which points to Help\Topics.
- Multitasker class: Added new constructor overloads that accept a boolean parameter, which controls whether the cleanup callback is always invoked, regardless of whether prepare has been invoked.
- DocProject installer no longer copies Sandcastle's DXROOT environment variable to system scope since Sandcastle now installs it with system scope by default.
- New Namespace: DaveSexton.DocProject.Sandcastle.BuildComponents, which contains several classes for managing the dynamic Build Component properties that appear when the SandcastleProjectOptions class is viewed in a PropertyGrid.
- New SandcastleProjectOptions properties: Help1xBuildComponents, Help2xBuildComponents, Help1xConceptualBuildComponents, Help2xConceptualBuildComponents, Help1xConceptualConfigFileName, Help2xConceptualConfigFileName.
- Sandcastle conceptual.config is imported into new projects as coneptual.help1x.config and conceptual.help2x.config
- Sandcastel build process has been refactored to support conceptual content (preliminary).
- New Class: BuildComponentsLoader : AssemblyLoader
- BuildComponentsLoader, and now BuildAssemblerLoader and Help2CompilerLoader use the Singleton pattern.
- New abstract method, BuildEngine.InitializeInBuildProcessComponentAppDomain replaces the CreateAssemblyLoadersForBuildProcessComponent method.
- New class: ConfigureTocBuildStep, is used by the Sandcastle build engine to merge the conceptual TOC with the reference TOC, if necessary.
- Sandcastle build engine no longer requires API sources, as long as there is at least one conceptual source (i.e., at least one XML file in Help\Topics\**\*.xml).
- DocSite templates now read the company name from an assembly-level attribute, and cache the result
- DocSite templates have new buttons in the Sidebar Contents area: Save, Print, Email and Bookmark (not all commands are present in each of the supported browsers, however.)
- New virtual property: BuildEngine.BuildProcessComponentInitializerType, which must be a type that derives from a new class named, BuildProcessComponentInitializer. It is used to initialize the BPC in a new AppDomain. The SandcastleBuildEngine provides an implementation that loads assemblies, such as BuildAssemblerLibrary.dll and BuildComponents.dll into the new AppDomain.
- New private method: CommentsDocument.DeleteEmptySections is called by the CommentsDocument.Save method to delete all elements that have no inner XML or attribute values before the document is saved.
- IEnvironmentHost now implements IServiceProvider (supported by both VS and the DocPoject External UI).
- HTML Editor tool strip has three new buttons: Insert Hyperlink, Insert Image and View Source
27420
by davedev
Oct 4 2007 at
12:09 PM
95 ** This changeset is probably incomplete. I highly recommend using the source code provided by DocProject's installer, which can be found in the installed "Source" folder.

Version Updates
- Installer=1.8.0
- DaveSexton.DocProject=1.8.0.0
- DaveSexton.DocProject.InstallPrep=1.3.0.0
- DaveSexton.DocProject.Sandcastle=1.3.0.0
- DaveSexton.DocProject.DeploymentSandcastle=1.3.0.0
- DaveSexton.Controls.HtmlEditor=1.1.0.0
- DaveSexton.DocProject.ExternalUI=1.1.0.0
- DaveSexton.DocProject.DocSites=1.0.0.0

New Projects
- DaveSexton.DocProject.DocSites: Utility library that provides navigational and search functions to DocSite templates.

Bug Fixes
- VSProjectItem.Hide method had a bug where it only worked if the specified relative path was only one directory deep on the specified base path. Multiple folders would be ignored.
- DocProject's build task now uses the selected configuration and platform and should work with Team Build, overriding OutDir on the command-line and custom output paths in project references.
- Imported presentation files, the media directory (art) and the working Comments directory are now located under the new target directory, which is a folder named "Help" off of the root instead of being in the root project folder itself.
- HtmlToXmlConverter did not close tags in the root element heirarchy if they were left open. (e.g., if the html is "<p><b>text</b>" then "</p>" would not have been added automatically.
- External UI does not update the dirty state of the UI after a build (projects are automatically saved if they are dirty when built); i.e., the save button remains enabled even though the project is not dirty.
- Exception when the value for the Sandcastle Help 1.x config file is set to be the same as the value for the Sandcastle Help 2.x config file.
- BuildEngine.Build method now supresses an AppDomainUnloadedException (means that the AppDomain was already unloaded) when DocProject attempts to unload the build process component's AppDomain instead of logging an exception and adding an error to the error list.

Features and Tasks
- General class properties that provide path information during builds have been fixed since previously ProjectDirectory and TargetDirectory (and sometimes WorkingDirectory) were being used interchangeably, although that's no longer acceptable because the Sandcastle engine uses a different target now.
- Choose a Build Engine wizard step now remembers the last selection made.
- BuildProcessComponent registration can be the full name of a type in the DocProject's assembly output, an assembly-qualified type name for an assembly in the project's bin folder or in the GAC, or a full type name and a vertical bar (|) that separates an absolute or relative path (from the project directory) to an assembly that contains the type. Spaces before the bar are significant and will be included in the type name, but spaces after the bar are trimmed from the assembly path.

New / Refactored
- DaveSexton.DocProject.targets has been redesigned for more flexibility (mostly for use with the External UI).
- Refactored for team build and config/platform bug fixes: IProjectProperties, BuildDocProject, MSBuildAnyProject, MSBuildDocProject, MSBuildProjectOutput, MSBuildProjectProperties, VSProjectProperties and DaveSexton.DocProject.targets.
- SandcastleBuildEngine and SandcastleSettings: working directory remains as "buildhelp" but is now relative to the project root instead of the target directory, and the target directory is now a folder named, "Help".
- Several class including Presentation, SandcastleSettings and SharedContentManager have been refactored to use the new "Help" folder instead of pointing to the project root.
- DocSiteContents.xml and DocSiteIndex.xml are now stored in the App_Data folder with the help of new BuildSettings properties: DocSiteDataPath, RelativeDocSiteDataPath, DocSiteIndexXmlFile, DocSiteContentsXmlFile, RelativeDocSiteContentsXmlFile and RelativeDocSiteIndexXmlFile.
- New BuildSettings properties: ProjectOutputDirectory and RelativeProjectOutputDirectory, the latter of which corresponds to a new IProjectOutput property: RelativeOutputPath.
- DeploymentSandcastleBuildStep was refactored to account for the new location of the DocSite files (App_Data folder instead of the project root) and the new output paths for compiled help files (1.x and 2.x).
- SandcastleSettings.WorkingDirectory property has been moved to BuildSettings.WorkingDirectory (new virtual property).
- BuildSettings.TargetXmlDocumentationPath has become WorkingXmlDocumentationPath since it's relative to the WorkingDirectory property not TargetDirectory.
- New BuildEngine methods: EnsureProjectSubdirectory, CleanProjectSubdirectory and DeleteProjectSubdirectory.
- Build items are now relative from the project directory instead of the target directory.
- DocProjectAddin.Initialize and Uninitialize now call Load and Unload on each provider regardless of whether runningInHost is true.
- External UI Program class now wraps setup and Application.Run in a try..finally and calls DocProjectAddin.Uninitialize in the finally block.
- InternalCreateDocSiteIndexStep and InternalCreateDocSiteContentsStep now automatically create the target directory it doesn't exist (e.g., App_Data). Also, the index step now traces its status using a resource string for localization.
- SandcastleHelpSystem has been updated to support a root path (this is required because the index and contents files generated by sandcastle use html\ as the root but the DocSite templates now require help\html\).
- Created the BufferedSettingsDictionaryBase class and derived GlobalsSettingsDictionary, XmlSettingsDictionary, ProviderSettingsDictionary and BufferedSettingsDictionary (the latter uses a generic IDictionary for committed settings and its previous code was extracted into the former 3 classes)
- Created the IsolatedSettingsDictionary class, which derives from BufferedSettingsDictionaryBase and persists the settings in an xml file located in isolated storage. The BuildEngineProvider class now stores changes to settings in isolated storage but reads the default values from DocProject's configuration file, as usual.
- DeploymentSandcastleBuildStep.GetContent and several other methods have been refactored into the new DeploymentContentFactory class. The new DeploymentContext class was created to encapsulate settings and path information for the factory.
- Renamed ReflectionInfo.IsAssembly property to IsManagedAssembly.
- In the SandcastleBuildEngine.MergeXmlDocumentationSection method the targetFile parameter was renamed to xmlDocumentationFile and xmlSection renamed to sourceXmlSection.
- Extracted most of the functionality from the DocProjectAddin class to a new class named DocProjectEnvironment.
- Created IEnvironmentHost interface, which provides an IWin32Window implementation as the main UI window and a method to show the host's build trace window. An instance of the host can be passed to the DocProjectEnvironment.Initialize method (the DocProject External UI does this).
- DteComponent renamed to VSEnvironmentHost and changed accessibility scope to internal; implements IEnvironmentHost and is used by the AddIn to initialize the environment.
- DteBuildTrace renamed to VSEnvironmentBuildTrace.
- Added TracePath and TracePathLine methods to the abstract BuildTrace class and all derived implementations. These methods simply expand environment variables in the specified string.
- Renamed DocProjectEnvironment.RunningInHost property to RunningInVisualStudio.
- VSProjectItem and MSBuildProjectItem now derive from an abstract base class named ProjectItem, which implements the IProjectItem interface.
- DeploymentSandcastleBuildEngine and DeploymentSandcastleBuildEngineProvider are no longer sealed.
- DeploymentSandcastleBuildEngine.GetContent virtual method added for derived types.
- New VS automation facades: ToolWindow, MenuCommand and VSCommand (ToolBarCommand now derives from VSCommand).
- Refactored DocProjectEnvironment (used to be in DocProjectAddIn) to support the new tool window and menu commands facade feature; added a new property named ToolWindows and an internal field for stand-alone menu commmands.
- BuildEngineProvider.ToolWindows property added; works just like the ToolBars property that has been in the last few releases.
- Created a global MenuCommand implementation named, "DocProjectPropertiesMenuCommand" for the Add-In; It wraps a new content-menu item that appears in the menu of project nodes in Solution Explorer (but only for DocProjects are DocSites).
- New DocProjectPropertiesToolWindow class that hosts a new control named, DocProjectPropertiesControl; the tool window is shown by the DocProjectPropertiesMenuCommand class.
- BufferedSettingsDictionaryBase.UseBuffer property added so that the DocProjectPropertiesToolWindow class can write directly to the project's global variables instead of a buffer since "Save" and "Cancel" commands are not available.
- SettingsDictionary now implements IDictionary<TKey, TValue> instead of deriving from Dictionary<TKey, TValue> to support the new BufferedSettingsDictionaryBase.UseBuffer property.
- Added the public BuildContext.ExecuteOutOfBand method for executing out-of-band steps during the build process.
- GenerateFrameworkReferenceDataBuildStep class created to generate .NET Framework 2.0 reflection files for each Sandcastle presentation if the expected directory structure does not already exist (the Sandcastle Sept CTP does not ship with the reflection data like it used to)
- DocSites: ValidateRequest has been disabled for all pages (using the web.config file) so that HTML and other "unsafe" content can be posted in the search box. I tried to use PostBackUrl as an alternative but Page.PreviousPage throws an exception anyway since ValidateRequest cannot be disabled programmatically.
25632
by davedev
Aug 13 2007 at
5:16 PM
98 ** This changeset might not contain the latest code-base. However, the installer will install the latest source code onto your system.

Version Updates
- Installer=1.7.0
- DaveSexton.DocProject=1.7.0.0
- DaveSexton.DocProject.InstallPrep=1.2.2.0
- DaveSexton.DocProject.Sandcastle=1.2.1.0
- DaveSexton.DocProject.DeploymentSandcastle=1.2.0.0
- DaveSexton.Controls.HtmlEditor=1.0.2.0
- DaveSexton.DocProject.ExternalUI=1.0.0.0

New DocProject 2008 Beta Versions:
- Installer=1.0.0
- All assemblies=0.0.1

New Projects
- DaveSexton.DocProject.ExternalUI: Builds the DocProject.exe program, which provides an interface for editing DocProject files, much like DocProject's "Active Projects" tools options page (using a PropertyGrid). This is useful for Express users since the Add-In cannot be used to edit project settings. Add the program as an external tool and specify "$(ProjectDir)$(ProjectFileName)" as the arguments string.

Refactored
** Note: Several classes have been refactored for various reasons but the change log was lost due to problems with TFS source control so they do not appear in this list - I never made a backup.
- Several classes in the TopicManagement namespace have been refactored to use the new CommentsManager and related classes.
- Several classes in the MSBuild namespace have been refactored for the new External UI project.
- Added a new property named, "XmlDocumentationTags" to the SandcastleSection class. The values are used by the Api Topic Management dialog for editing namespace comments.
- Refactored the Api Topic Management dialog (and related classes) so that it may be used in the future to edit API comments, which will be saved in a separate file for each assembly in the project's Comments folder.

New Types
- DaveSexton.DocProject.CommentsManager class
- DaveSexton.DocProject.CommentsDocument class
- DaveSexton.DocProject.CommentsMember class
- DaveSexton.DocProject.Sandcastle.TopicManagement.TopicNodeContentItem class

Misc Updates (Tasks, Features and Bug Fixes)
- Renamed the "Project Documentation" templates to "DocProject" since the word "Documentation" does not fit on one line in Visual Studio's new project dialog when using the large icons view.
- WizardForm class no longer references DteComponent and exposes a new public event, "WizardCanceled", which is used by the caller to display the DocProject-specific warning about canceling the wizard after the project has been generated.
- The MSBuildProjectOutput.OutputPath property should return "OutDir" instead of "OutputPath" since Team Build sets "OutDir" explicitly.
- Regex Options menu in the API Topic Management dialog should automattically select None when all of the other options are toggled off.
- Add IndexOf methods to BuildStepCollection class: one that accepts a type and one that accepts a name (string)

- Make DocProjectOptions derive from MarshalByRefObject
- Make the ExternalSources collection ISerializable
- Change the default ImageSet from WindowsHelp to Msdn in the DocSite's TreeView control.
- Update all DocSite fonts to use Tahoma and fallback to Arial (Segoe UI was attempted first but it looked awful below 12pt)
- The shared content editor should display a list of all unique item="..." values in the shared_content.xml file instead of having header and footer hard-coded.
- The SandcastleBuildEngineProvider.SandcastleInstallPath property does not store the user's settings in the Paths.Root property, as it should. When this setting is edited by the user in the Engines tools options page it's value is not preserved.
- Make the ImageTranslater class public instead of internal
- Removed the Sandcastle project option, "KeepXmlCommentsFileName" since it no longer applies.
- Renamed sandcastleConfigReplacements section to sandcastleConfigChanges and updated the appropriate classes in the Configuration namespace (Sandcastle project)
- Renamed the TopicNode delegates.
- Update HtmlEditor control's Body property to use the domDocument.body instead of Document.Body, since the latter doesn not return user edits.
- The HtmlParserBase.ReadName method now has a boolean attribute named, "endAtWhitespace" so that when reading end tag names white-space will cause an exception instead of being silently ignored.
- The sandcastle.help1x.config file is now included as a project item if no compiled help is built.
- Fixed a bug where the DocSite contents and index generation steps would overcalculate the progress bar value and an ArgumentException would be thrown.
- Fixed a bug where the VSDocSite.Provider property used GetCommittedvalue instead of reading the in-memory value of BuildEngineProviderName, which caused the Active Projects page to display the default build engine provider's options until VS was restarted.
- Fixed some HtmlToXmlConverter bugs.
- Fixed a bug where the HtmlEditor would not raise a changed event if the only changes at the time the document loses focus were made by custom commands (e.g., float and create table)
- Several classes werer refactored to fix bugs in the VS 2008 code-base. The changes were made to the VS 2005 code-base as well to ease maintainence by keeping the sources in sync (as close as possible).
- Logged the steps for the VS 2005 to VS 2008 conversion of the source code (approx. 30), which will be published on CodePlex or at http://davesexton.com/blog
- Fixed the VB.NET DocSite template bug that prevented derived-projects from being built until the UI items' designer files were regenerated (the template designer items were defined in an invalid namespace so removing "namespace..end namespace" fixed the problem)
24093
by davedev
Jun 26 2007 at
10:21 AM
79 ** This changeset may not contain the latest code-base. However, the installer will install the latest source code onto your system.

Version Updates
- Installer=1.6.2
- DaveSexton.DocProject=1.6.2.0
- DaveSexton.DocProject.InstallPrep=1.2.1.0
- DaveSexton.DocProject.Sandcastle=1.1.1.0
- DaveSexton.Controls.HtmlEditor=1.0.1.0

New Features
- Supports the Sandcastle June 2007 CTP Refresh (although it's not marked as a refresh version on the download page)
- A list of external assemblies may be configured as API sources along with all project references. This feature also provides the ability to generate help for Web Site Projects by using a Web Deployment Project to build an assembly that can be referenced as an external source.

Bug Fixes
- The Add-In will now load even if one or more of its command bars do not in the case of an exception.
- With the Sandcastle June 2007 CTP a root "Namespaces" node is no longer generated. As a result, the summary editor is now disabled in the API Topic Management dialog when the project node is selected.
- PresentationCollection string indexer now throws ArgumentNullException.
- The "Choose Presentation" wizard step no longer displays a presentation that is registered if its directory does not exist on disc.

New Classes
- ExternalSource, ExternalSourceCollection
- ExternalSourceComparer
- ExternalSourcesEditorDialog
- DataGridViewFileColumn, DataGridViewFileCell

Updates
- Refactored several classes for the new "external sources" feature, such as: DocProjectOptions, IDocProject, VSDocProject, MSBuildDocProject, BuildEngine, BuildContext, SandcastleSettings, ReferenceInfo, etc.
- Removed the ability to edit the project summary using the API Topic Management dialog since Sandcastle no longer builds a root Namespaces node to which the summary can be applied.
- Renamed SandcastleTopicManagementDialog class to ApiTopicManagementDialog (and the same for related classes in the TopicManagement namespace).
23909
by davedev
Jun 20 2007 at
12:22 AM
26 This changeset corresponds with the 1.6.1 Release Candidate installer.

** PLEASE BE AWARE that this changeset probably doesn't contain the most up-to-date code due to problems with the check-in process. However, the installer will install the latest source code onto your system.

Features
- Supports the Sandcastle June 2007 CTP only

Bug Fixes
- Engines page no longer displayes the internal Settings and ToolBars properties (BuildEngineProvider class updated)
- Updated SandcastleTopicManagement class to check topic nodes that have one or more children checked when the dialog is first opened
- Changes to the API Topic Management dialog are not preserved if it's opened via the tools options page instead of the Sandcastle toolbar.
- API Topic Management dialog produces duplicate elements in the MRefBuilder.config file.

Tasks
- Updated Sandcastle build steps for the Sandcastle June 2007 CTP
- Refactored SandcastleTopicManagement class to support the new toc.xml format (missing R:Project node).
- Refactored InternalCreateDocSiteContentsStep, HelpSystem and SandcastleHelpSystem for the new toc.xml format.
- Refactored some template files to support the new toc.xml format: DocSiteNavigation, DocSiteContentsSiteMapProvider, DocSiteContents.ascx and DocSiteContents.ascx.cs
- Updated DocSiteScript.js (spelling error in comment)
- Updated DocProject's configuration file to include the new VSOrcas presentation style and some properties: paths-sharedPresentation, projectPaths-sharedPresentation and presentations-add-xmlDocModelTransformationArgs
- Added SandcastleSettings.CreateXslTransformArgumentSwitches method to support the assignment of xsl variables on the command-line using Sandcastle's XslTransform program.
- Set the Sandcastle project's SharedContentForm.MinimumSize property to 300 x 200
- Added DebuggerHiddenAttribute to DocProjectAddin.GetCommandAndControl

Updates
- Installer updated to 1.6.1; DaveSexton.DocProject.dll updated to 1.6.1.0; DaveSexton.DocProject.Sandcastle.dll updated to 1.1.0.0
23555
by davedev
Jun 11 2007 at
9:44 PM
84 -----------------------------------
UPDATE:
THE FILES IN THIS CHANGESET ARE NOT IN-SYNC WITH MY LOCAL FILE SYSTEM.
Please use the code-base provided by the DocProject installer instead. I'm beginning to investigate why this seems to happen everytime I check-in my code.

Thanks for your understanding.
-----------------------------------

This changeset corresponds to the DocProject 1.6.0 Release Candidate.

Bug fixes
- Updated custom installer action to return to the caller instead of throwing ArgumentNullException when savedState is null in the Rollback or Uninstall methods.
- Status and Progress bars do not get reset if a help-build is canceled. This was due to the bars being reset before the last async step gets to exit gracefully, after which it updates the status text and progress bar for itself.
- The InstallPath registry key is now installed for "Everyone" installations as well as for "Just Me" installations.
- See the issue tracker for additional bug fixes.

Features
- The source code has been revised to use solution folders and much of the code base has been refactored to support many of the new features in this release.
- In preparation for some of Sandcastle's future presentation styles, DocProject now uses a presentation configuration section. This provides the ability to register custom presentations and configure how DocProject imports them into new DocProjects and DocSites.
- The API Topic Management dialog enables users to edit project and namespace summaries in both text and HTML. You can also edit the summaries using Visual Studio's XML editor.
- The API Topic Management dialog provides some new search options such as, "Find/Apply next match only" and "Show matching topics".
- API Topic Management nodes are loaded on-demand and compiled XPath queries have been used to improve the dialog's performance.
- API Topic Designer provides an HTML editor to create the shared content header and footer.
- Sandcastle toolbar provides shortcut commands to the API Topic dialogs.
- Users have the option to use friendly names or GUID names for the html files generated by Sandcastle.
- See the release notes for additional features.

Tasks
- Organized projects into Visual Studio Solution folders.
- Created project, DaveSexton.DocProject.Sandcastle (1.0.0), which now contains all of the Sandcastle-specific files that used to be in the Add-In project.
- Much refactoring in the Sandcastle namespace and various Add-In classes, including some in the Engine namespace.
- Renamed DaveSexton.DocProjectAddin to DaveSexton.DocProject.
- Renamed DaveSexton.DocProjectAddin.DeploymentSandcastle to DaveSexton.DocProject.DeploymentSandcastle.
- Renamed DaveSextonAddin.Addin to DaveSexton.Addin.
- Renamed DaveSextonConnect.vsconnect to DaveSexton.vsconnect.
- Renamed "Connect" class to "Addin".
- Created project, DaveSexton.Controls.HtmlEditor, which contains a custom WebBrowser-derived control for editing HTML markup with the help of toolstrip command buttons and a context menustrip.
- Added support in the API Topic Management dialog to allow users to edit project and namespace summaries in text mode or HTML (designer) mode using the new HtmlEditor control.
- Added new abstract method to BuildEngine class: protected abstract AssemblyLoader[] CreateAssemblyLoadersForBuildProcessComponent(); (implementations may return null)
- Extracted some static methods from the BuildController class into the Addin class.
- Renamed a few SandcastleProjectOptions properties and removed a few static fields.
- Created a managed config section, DaveSexton.DocProject.Sandcastle.Configuration.SandcastleSection, which provides default settings and information about Sandcastle's installed presentations.
- Added a description label to the Choose Presentation Wizard Step.
- Updated SandcastlePresentation.png graphic.
- Created TopicManagement namespace.
- Refactored the API Topic Management Dialog and improved the UI.
- Decreased padding around the API Topic Management Filters group.
- New SandcastleSettings properties: ProjectXmlFilePath and RelativeProjectXmlFilePath, which point to the project.xml file located, by default, with the .config files in the Configuration folder.
- Updated template projects' BuildProcess.cs summary documentation and made sure that the CSharpDocProject summary was no longer different from the other templates' summaries.
- New classes: VSAnyProject, VSDocProject and VSSourceProject, + several others that implement IAnyProject, IDocProject and ISourceProject. The ProjectFactory class and VCProjectFactory class can create instances.
- Refactored an entire code-base to use the new VS* interfaces instead of the VS automation interfaces (e.g, VSProject2). Also, MSBuildAnyProject and the other MSBuild* implementations are used by the BuildDocProject task.
- BuildSettings class is now MarshalByRefObject.
- Wizard controls that can be preloaded are loaded when the wizard starts to reduce flickering when navigating among the different steps for the first time.
- Fixed some synchronization bugs that sometimes occur when canceling the help build process.
- Preliminary support for Visual C# 2005 Express and Visual Basic 2005 Express to build compiled help 1.x (.chm) from the standard Project Documentation template. NOTE: GUI configuration is not provided in this release.
- Many more changes and additions too numerous to list
- Updated Installer to 1.6.0 and Add-In to 1.6.0.0.
21883
by davedev
May 3 2007 at
12:18 AM
19 [Cleaning Source Control - INCOMPLETE]
21835
by davedev
May 1 2007 at
6:55 AM
30 Copyright (c) 2006-2007 Dave Sexton
Please read and agree with the License before downloading or viewing the source code, including any and all source code files (.cs), images or content provided by the installer or through the CodePlex website.

The following changes correspond to the 1.5.0 RC of DocProject.

Note: The installer provides the complete source code, including the Visual Studio solution file and project files.

Updates:
* DeploymentSandcastleBuildEngine now derives from the SandcastleBuildEngine class instead of using composition.
* Updated DeploymentSandcastle version to 1.1.0.0
* Updated InstallPrep version to 1.1.0.0
* Fixed bug in Help2CompilerLoader class that would sometimes cause an error in the help 2.x COM library when using the New Project wizard.
21808
by davedev
Apr 30 2007 at
5:36 PM
7 Bug Fixes
* A failed help build will now stop the build process in Visual Studio.
* An HTML Help Workshop compiler error is now recognized as fatal.
* Fixed some spelling errors in template documentation
* Help 2.x build warnings are no longer treated as errors.
* Now DocProjects, like DocSites, will use the Help 1.x configuration file to build html output when a project is not configured to build compiled help.
* The Help 2.x compiled help file (.HxS) uses the name of the project, but now without spaces; spaces are a problem for the Help Integration Wizard.
* Fixed some bugs relating to the status bar and progress meter during help builds, including some exception-related issues.
* Include Project Output Dialog options are now saved and reflected in the tools options page for the active project. (e.g., Don't ask me this again).

New Features
* DocProject now works with projects nested in Solution folders.
* The DocSite sidebar is now resizeable and works in the latest MSIE, FireFox and Opera web browsers
* Build warnings and errors are added to Visual Studio's Error List.
* New BuildContext methods: AddWarningToList, AddErrorToList, AddInfoToList and .FlushItemsToList.
* A copy of MRefBuilder.config is imported into new DocProjects and DocSites.
* API Topic Management dialog is a GUI that can be used to configure the MRefBuilder.config file with regular expression and categorical filtering.
* The project templates now appear in a DocProject node in the New Project dialog under Visual C# and Visual Basic. The templates remain available at the root nodes as well, but only for "Just me" installations.
* The DocProject installer can be used to install for "Everyone", not only "Just me".

New Types
* Help2CompilerStep: Uses the MS Help 2.x API as a replacement to using the hxcomp.exe program.
* BuildAssemblerStep: Uses the BuildAssembler API as a replacement to using the BuildAssembler.exe program.
* DelayedAssemblyLoader: Abstract class from which the following two classes derive.
* BuildAssemblerLoader: Sealed class that loads the BuildAssembler API on-demand.
* Help2CompilerLoader: Sealed class that loads the MS Help 2.x API on-demand.
* BuildTrace is an abstract class that encapsulates the message- and event-tracing functionality of the BuildContext class. This class was implemented so that step output and error/warning events can be handled by some other means than the DTEComponent. This will be useful for executing bulid steps outside of Visual Studio. Two concrete implementations are provided: DTEBuildTrace and CapturedBuildTrace.

Name Changes
* Renamed Sancastle's New Project Wizard steps to include "WizardStep" at the end so they are easily distinguishable from build step classes defined in the same directory.
* BuildAssemblerConfigurationPath and BuildAssemblerRelativeConfigurationPath proeprties of the SandcastleSettings class no longer have the BuildAssembler prefix.

Refactored
* BuildStep class now derives from MarshalByRefObject instead of DTEComponent. Step authors are encouraged to write trace messages to the CurrentContext instead of the DTEComponent class.
* Sandcastle build engine steps (CreateSteps method) has been spit into mutiple methods.
* Moved MSHelpV2 resource to Sandcastle directory
* Sandcastle build steps (in the SandcastleBuildEngine class) have been refactored into new methods: AddTocGenerationSteps, AddHelp2Steps and AddHelp1Steps.
* A method named, BuildToc has been added to the SandcastleBuildEngine class.
* DocProjectOptions.Commit and .Cancel are now virtual methods. If you override them make sure to invoke the base implementation.
* DTEComponent.BuildOutput property fixed so that it catches ArgumentExcpeption and adds an output window named, "Build" instead of checking for null (this fix prevents an error in localized versions of Visual Studio).
* Several other classes have also been refactored.
* BuildContext can be constructed with a delegate that handles the Trace* methods.
* All classes in DocProject that derive from BuildStep<> now use context.Trace* instead of the inherited DTEComponnet.Trace* methods so that output may be redirected if the steps are run out-of-band.
* Custom install actions were moved to the InstallPrep project. The reason is that the installer uses reflection to load all of the types in the assembly, looking for custom actions, but since the AddIn now references the BuildAssembler and Help 2.x libraries the installer fails citing that it can't load some types (DocProject delay-loads those libraries in case they aren't installed on a user's system).
20770
by davedev
Apr 5 2007 at
2:55 AM
32 New Features
* SandcastleBuildEngine CreateSteps method has been refactored to use the new Sandcastle March CTP transformations.
* Included automated build support for Html Version 2 output (.hxs). DocProjects and DocSites can now build Html Help 1.*, Help 2.*, none or both via a single build.
* Included AJAX support for the DocSite templates, which now require AJAX to be installed.
* Renamed the tools options page, "Dave Sexton's Tools" to "DocProject" and split the tabs into 3 separate sub categories: Engines, Active Projects and Alerts (although Alerts is not actually implemented as of 1.4.0).
* Improved error handling and logging.
* A status notification and progress bar now appear during help builds.
* All output directories are now completely cleaned by the SandcastleBuildEngine class before each help build (including the root Html and Media directories).

Updates
* Updated Installer version to 1.4.0 and Add-In assembly to 1.4.0.0
* BuildContext class now has Trace* methods.
* Refactored Trace* methods in various classes: renamed some parameters and included CurrentUICulture for string formating.

* Added Name property to BuildStep class and IBuildStep interface and provided default names for all of the built-in steps that are used by the Sandcastle build engine. The current step's name is written to the output window before it's executed.
* Added a ToString() implementation to the built-in IBuildStep implementations, that outputs meaningful data.
* Modified several files in the CSharpDocSiteTemlpate and VBDocSiteTemplate projtects for AJAX support and some new functionality.
* Created ReflectionToHxSProject.xslt as an embedded resource (accessible via the new MSHelpV2 class) that is copied into the Presentation\Transforms directory of every new DocProject and DocSite (via the Sandcastle.ChoosePresentationStep class).
* The Sandcastle build engine copies several Help V2 embedded resource files into the DocProject or DocSite when building V2 help: index_*.hhk and files.hxf.
* BuildStepCollection is now MarshalByRefObject and can be manipulated through the BuildContext that is passed to the overrideble BuildProcessComponent methods. DocProjects and DocSites can use this feature to modify the step collection in the BuildStarting method.
* Renamed HtmlHelpWorkshopSystem to SandcastleHelpSystem and moved the class to the Sandcastle namespace.
* Updated ReferenceResolver class to accommodate for references to multiple versions of the same assembly.
* Updated ReferenceResolver class to unload its AppDomain after it has finished.
* Made some changes to the xml comments in each template's BuildProcess[.cs|.vb] file.
* Added wizard step for Sandcastle to allow the user to choose the type of help output for their new DocProject or DocSite (e.g., Help 1.*, Help 2.*, none or both)
* Added wizard step to have the user locate the Help Workshop 1.* and 2.* programs if they aren't found at their default install locations (only if they are chosen in the previous wizard step)
* Project options in the tools options page now shows the selected Sandcastle presentation (e.g., vs2005 or Prototype).
* Added support in the ExternaProcessBuildStep class for redirecting standard error information to the build output window.
* Added editors to the SandcastleBuildEngineProvider class's properties that accept file or folder paths. Browse buttons (...) appear next to each of those properties in the PropertyGrid displayed on the Engines tools options page.
* New classes: SortedPropertyConverter and SortedPropertyAttribute. These classes provide a means to implementing custom sorting on properties that are displayed in a PropertyGrid control when PropertyGrid.PropertySort is equal to Categorized or NoSort. SortedPropertyConverter must be specifed using the TypeConverterAttribute on the class for which an instance will be assigned to the PropertyGrid.SelectedObject property and the SortedPropertyAttribute can be used to assign a SortIndex to each of the class's properties. For properties where the attribute is not applied the default sorting algorithm is alphabetical with an implicit SortIndex of zero. The SortedPropertyConverter class is attributed to the DocProjectOptions and BuildEngineProvider classes so that all derived types may use the SortedPropertyAttribute without any required modifications to the class.
* Added UpdateMsi.bat to InstallPrep. It updates the .msi file for Vista using Microsoft's WiRunSQL script.
* Added Post-Build Event to the Installer project, which executes the UpdateMsi.bat file (new in the InstallPrep project).
18831
by davedev
Feb 21 2007 at
4:03 PM
24 Note: The DocProject installer installs the latest source code with the software, including the Visual Studio solution file, all projects, code and content.

This changeset corresponds to the 1.3.0 Release Candidate.

Fixed

* Fixed a bug where DocProjects and DocSites that contain spaces in their project names cannot be built.
* Fixed a bug described in the "Saving modified Build Engine settings" work item.
* Fixed bug in the installer that set the registry value of InstallPath and the custom action's "vsi" argument to the default installation directory; not the location that the user may enter.
* User can now modify the install path when installing DocProject.
* Uninstalling DocProject from Add/Remove Programs now completely removes all of the installed VS content and the GACed assemblies so there are no more manually steps required for uninstallation.

New Functionality

* DocProjects and DocSites created for the Sandcastle build engine now contain a copy of a presentation directory (e.g., vs2005, Prototype) selected by the user via the new wizard. The sandcastle.config file is automatically modified to use the transformations in the local project.
* DocSite templates are now fully-functioning ASP.NET Web Applications that display the compiled help with an interactive TOC, index and breadcrumbs, an automatic header and footer, and a link to download the compiled help file (.chm).
* Added support for partial and "skipped" builds. Several classes were refactored to support this new functionality.
* Added support for the Clean and Rebuild commands.

New Wizard

* Created abstract WizardStep class, which is a doubly-linked list of wizard steps that each provides a UserControl to be displayed on the main wizard Form.
* Created WizardForm class, which provides the navigation controls and displays each wizard step.
* Created WizardController class, which is the user process component used by the WizardForm.
* Added virtual method to BuildEngineProvider: CreateNewProjectWizardStep, which allows providers to extend the new wizard with custom steps.
* Created steps for the DocProjectConfigurationWizard and Sandcastle's custom wizard steps.
* The wizard now requires the user to choose a default build engine. The last engine selected in the tools options page dropdown on the Build Engines tab is used as the default in the wizard.
* For the Sandcastle build engine, users must now choose the base presentation for the project when creating new DocProjects and DocSites (e.g., Prototype, vs2005, or any other presentation discovered in Sandcastle's presentation directory).

Refactored

* Refactored several classes including IdeEventListener, BuildController, BuildEngine, BuildSettings, BuildContext and ProjectOutput.
* Refactored the Sandcastle classes including the SandcastleBuildEngine, which now produces a different, more customizable sequence of steps in the CreateSteps method.
* Refactored SettingsDictionary and extracted the buffering strings behavior into a new derived type: BufferedSettingsDictionary.
* The IBuildEngine and IBuildStep interfaces have been modified.
* SandcastleBuildEngineProvider.KeepXmlCommentsFileName now has a default value of true. This property serves as the default value for all new DocProjects and DocSites.
* Modified the build process components in each template to use the phrase "{Step n / Total} Time Elapsed" instead of just "time".
* The build engine for a project no longer can be changed via the tools options page. Although the setting can be changed in the project file itself, it's not recommended.
* Moved static DTE, BuldOutput and VisualStudioMainWindow properties and backing fields from BuildController to the DTEComponent class.
* Updated each template project's .vstemplate file to reference the new wizard class: VSWizard. All templates from previous versions of the DocProject software must be replaced with the new templates.
* Improved error handling in the Connect class and several other classes.
* Modified the persisted names of SandcastleProjectOptions to be prefixed with "Sandcastle_". This will reduce the likelihood of conflicts with other settings (note that a period doesn't work so an underscore was used instead). This is the new standard for the names of persisted project options: prefix the name with a value that uniquely identifies the associated build engine.
- Note that this change will cause the KeepXmlCommentsFileName setting in older DocProjects and DocSites to be ignored. Users must set this settings again in old DocProejcts and DocSites via the tools options page.
* Added new methods to the ProjectInformation class that add an item or folder to a project using an absolute or relative path.
* Added some diagnostic code to fix a bug and it was not removed.
* Added static Initialize method to BuildController that must be called in Connect before the class is used (replaces a need for the type initializer)
* Added AddCopyFile method to BuildStepCollection class.
* Added new functionality to the CopyDirectoryBuildStep and DirectoryCopier classes.
* Added Property: bool BuildContext.IsDocSite { get; }

New Classes

* New abstract class: DocProjectItemBase and implementations: DocProjectItem and DocProjectFolder
* New class: DocProjectItemCollection (Note that DocSites are DocProjects too so these classes apply to both types.)
* New class: CopyFileBuildStep.
* New class: BuildStepExecutionEngine.

New Projects

* DaveSexton.DocProjectAddin.DeploymentSandcastle.

This project provides a new build engine that uses the SandcastleBuildEngine and can be configured by the user to deploy the compiled help output of a DocProject or DocSite after it has been built. The reason for creating this project is to show how plug-ins work and to provide some new functionality.

Modifications to support the new DeploymentSandcastle project:

* BuildEngine.Build method is now virtual, which makes it possible for custom engines to delegate the entire build process to another engine, such as the SandcastleBuildEngine class.
* SandcastleBuildEngineProvider class is no longer sealed.
* SandcastleProjectOptions class is no longer sealed.
* base ProjectOptions class now has a CopyTo method.
* Added BuildContext.ProjectDirectory property, which returns the full path to the DocProject or DocSite directory.
* Changed the BuildEngine class's abstract BuildStarting and BuildCompleted methods into protected virtual On- methods that raise a corresponding event.

* DaveSexton.DocProject.InstallPrep

Encapsulates the installer preparation process that used to take place in the Add-In project via a post-build event. The same code and structure exists in the new project (having been removed from the Add-In project), and is linked to the DaveSexton.DocProject.Installer project by a project dependency.
Building the Intaller project will automatically build the InstallPrep project. The DSZip utility is no longer required to build and test the source code, although it's still required to build the installer project.
Note: The InstallPrep assembly output does not serve any purpose and is not used by DocProject or the solution build process.

Building Source code on Vista:
* BuildOutput.bat has been updated to accommodate a change in the output of REG QUERY, which seems to use spaces instead of tabs now to delimit columns. Regression testing performed on XP without failure.

Renamed

* Renamed ProjectOptions class to DocProjectOptions. (Note that DocSites are DocProjects too so this class applies to both types.)
* Renamed AddSourcesWizard to DocProjectConfigurationWizard and refactored extensively to support the new wizard features.

Installer

* Modified custom installer class to now provide complete installation and uninstallation.
* Renamed the setup and deployment project from "DaveSexton.DocProjectAddin.Installer" to "DaveSexton.DocProject.Installer". The .msi that it builds was renamed to be the same.
* Installer adds the new DeploymentSandcastle project's assembly to the GAC and installs its source code as well.
* The Add-in assembly is now removed from the GAC when DocProject is uninstalled (and the new project's assembly as well).

* Updated installer version to 1.3.0 and add-in assembly version to 1.3.0.0.
18771
by davedev
Feb 20 2007 at
7:45 PM
0 DELETED ALL
18770
by davedev
Feb 20 2007 at
7:43 PM
2
18769
by davedev
Feb 20 2007 at
7:32 PM
0 [CLEANING SOURCE CONTROL]
16816
by davedev
Jan 22 2007 at
2:49 PM
20 More changes to BuildOutput.bat (source control, again, caused problems and I have absolutely no idea why) and a small mod to the SandcastleBuildEngine class.

The 1.2.1 release candidate has been updated to reflect the changes in this changeset.

NOTE: The DocProject installer, RC 1.2.1, installls the complete source code. It's recommended that you use the installed source code instead of the code in this changeset, which may be incomplete.


1-25 of 37Change Sets < Previous 1 2 Next >
Updating...
© 2006-2009 Microsoft | About CodePlex | Privacy Statement | Terms of Use | Code of Conduct | Version 2009.6.1.15196