Coder Social home page Coder Social logo

ewsoftware / shfb Goto Github PK

View Code? Open in Web Editor NEW
2.2K 2.2K 367.0 34.42 MB

Sandcastle Help File Builder (SHFB). A standalone GUI, Visual Studio integration package, and MSBuild tasks providing full configuration and extensibility for building help files with the Sandcastle tools.

License: Other

XSLT 0.20% C# 94.78% Smalltalk 3.08% CSS 0.25% JavaScript 0.63% PHP 0.10% HTML 0.23% C++ 0.01% Batchfile 0.07% Vim Snippet 0.19% Visual Basic .NET 0.29% ASP.NET 0.17%

shfb's People

Contributors

304notmodified avatar adam-s-daniel avatar addabis avatar bleis-tift avatar christophlindemann avatar cyber-ex avatar dependabot[bot] avatar dgedge33 avatar drew-gross avatar ewsoftware avatar felix-ri avatar joriszwart avatar octoate avatar pedrolamas avatar qmfrederik avatar ritchiecarroll avatar robertvanderhulst avatar sharwell avatar shunter avatar sixlettervariables avatar smile4ever avatar ste1io avatar suemaurizio avatar tlgkccampbell avatar tom-englert avatar tylerohlsen avatar vbwebprofi avatar viktorspacil avatar xinfli avatar zccz14 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shfb's Issues

VSPacakge fails if Visual Studio runs it from the Shadow Copy location

I have installed latest package. Added new project to VS 2013 Update 4. Set source dll's and refereces and tried to build project. I got:
Warrning
Help file builder content for the 'en-US, English (United States)' language could not be found. Using 'en-US, English (US)' defaults.
Error
Unable to transform template 'en-US.xml': Could not find a part of the path 'C:\Users******\AppData\Local\assembly\dl3\B8YMJO3A.LZE\PZPZXZV2.ZMG\f23369c6\0006711a_4106d001\VS2013\SHFBContent\en-US.xml'.
I have tried to generate documentation using SandcastleBuilderGUI.exe and everything is working fine.
Tried also running it from Visual Studio on different computer, but the error stays almost the same.
How to solve this problem. My operating system is Windows 8.1 with latest updates.

Request for a "Portable Executable" scaffold / process

I would like to run SHFB (and SandCastle) to build HTML files are part of an automated process.

This process is done on "clean room" build machines - it would be very nice to be able to run some no-install executables.

While the UI-based SandCastle installer (and SHFB therein) are nice for end-users it really hampers on getting an automated process pushed.

Missing Cloo.dll

hi mate. trying to build the first doc on x64 win7 machine but failed with missing cloo.dll.
any idea pls.
thanks

Generating reflection information...
[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe]
Build started 2/04/2015 11:18:55 PM.
Project "C:\Users\Kha\OneDrive\My Documents\Help\Working\GenerateRefInfo.proj" on node 1 (default targets).
PrepareForBuild:
Creating directory "obj\Debug".
GenerateRefInfo:
MRefBuilder (v2015.1.12.0)
Copyright ¸ 2006-2015, Microsoft Corporation, All Rights Reserved.
Portions Copyright ¸ 2006-2014, Eric Woodruff, All Rights Reserved.
Loaded 1 assemblies for reflection and 1 dependency assemblies.
MRefBuilder : error : Unresolved assembly reference: Cloo (Cloo, Version=0.9.0.0, Culture=neutral, PublicKeyToken=null) required by OpenCLTemplate [C:\Users\Kha\OneDrive\My Documents\Help\Working\GenerateRefInfo.proj]

Last step completed in 00:00:02.1506

SHFB: Error BE0043: Unexpected error detected in last build step. See output above for details.
at SandcastleBuilder.Utils.BuildEngine.BuildProcess.RunProcess(String fileToRun, String args)
at SandcastleBuilder.Utils.BuildEngine.BuildProcess.Build()

Broken links for additional html documentation

If an html page is added to the project and included in the TOC, the link to the page in TOC has a truncated page name, instead of the original name, and the page does not make it to the html directory. The result is that the TOC link to the page fails.

For example for an html page named MyPageExample.html, the TOC link may looks like something like this: ../html/xample.html. But neither MyPageExample.html, nor xample.html can be found in the html directory.
Thanks.

Sandcastle build seems to keep filehandle open, preventing successive builds (VS restart required)

Hello,

I'm using the Sandcastle help file builder to build my API documentation file each time I trigger a release build.

It seems that at least in the latest version (2015.01.12) the filehandle(s) to my DLL(s) are not closed anymore after build. That prevents me from triggering new builds completely; I need to restart VS (2013) instead each time.
If I don't build the API documentation, I'm able to trigger release build by release build without any problem.

Best regards,
Ralf Koban

Question: format of SHFB Website output

Hi,
This is really a question on website type output, not an issue with the software.
I did a quick scan of HTML output and I think it contains java scripts with normal HTML formats. The output type stays ASP.NET and when I run index.html, IE asks me if I want to enable ActiveX object. And it looks like it's related to moving the divider that splits the screen between right and left.

I'm wondering if the web output require anything on server's end to run. Our web server is Apache on LINUX and the policy is that anything runs on server-side is a no-no for us.

Thank you for your help.

Document the Sandcastle Tools

Moved from CodePlex

As time permits, add a help file for the Sandcastle tools that describes the various tools and how they work and also provides a location to place the version history for them.

Progress made so far:

  • Added XML Comments Guide help file.
  • Created Sandcastle Tools help file with basic info from the Sandcastle Styles wiki content. This help file will be filled out as time permits.
  • Merged Sandcastle Tools content with the main SHFB help file. Stubbed in topics for all of the Sandcastle tools.

Allow install of SHFB VSPackage for all users

Move from CodePlex
Originally submitted by Win32nipuh

I installed SHFB, then I run VS2010. It works fine, it understands the SHFB projects But when my colleague connects to the same machine via Remote desktop with his login, then run VS2010 it receives an error: VS does not recognize this kind of projects.

EWoodruff wrote Jan 12 at 9:26 AM
By default, VSIX packages are installed for the current user only. I don't currently expose an option in the guided installer to install it for all users. It can be installed for all users manually using the following command line:

"%VS100COMNTOOLS%\..\IDE\VSIXInstaller" /a SHFBVisualStudioPackage.vsix

The "/a" command line option will make it install in the admin location which should be available to all users.

EWoodruff wrote Jan 14 at 12:11 PM
Subsequent reply from OP indicates that it installs but cannot find the Frameworks.xml file. It's an issue related to the path its expecting to run from. I'll look into it.

Questions: inheritedoc and filter out Field section on output

I have a static class just for constants (ported from C/C++'s global #define). The general idea is instead of lots field member pages, we will have a table in remarks section that lists field name, value, summary. Like https://msdn.microsoft.com/en-us/library/windows/desktop/ms681388(v=vs.85).aspx knowing the document at that link is NOT generated from source. However, the requirement is that it has to generate from source.

I am trying to insert content of summary section of a field into its class' remarks section.
I tried

and

and both generates nothing

The second question is how do I disable the Fields section of output. The API filter allows me to uncheck it but it does not look like its saving the setting when I build. Also note this class has ONLY fields info, which I think could be the issue.

Thanks again for your help.

********** Source Code **************
namespace TestLib
{
///

/// Class that defines values for return codes.
///

///
/// The following is a list of error code ordered by its value
///
///
/// Error Code Flag
/// Error Code Value
/// Description
///
///
///
/// 0
///
///
///
///
/// -1
///
///
///
///
public static class TestClass
{
///

Return value if function succeeded.

public const Int32 G_NO_ERROR = 0;  
/// <summary>


/// General library error. Indicates internal API caught an unexpected error. Contact Galil support if this error is returned, [email protected].
/// </summary>


public const Int32 G_GCLIB_ERROR = -1;

}
}
********** Source Code **************

Inherited and protected members filter

Moved from CodePlex
Originally submitted by sharwell

It would be nice if the VS2013 presentation style included filters on the member listings to show/hide protected and/or inherited members, similar to the boxes shown in the MSDN library documentation.

Consider distributing alternative "light" theme via NuGet

Certain presentation aspects of the SHFB output are subjective, and obviously we can't match everyone's individual tastes. It would be nice to have a live example of an alternative presentation style so developers can easily understand how to use the reference implementation of SHFB alongside their custom theme.

I propose packaging the "light" theme described in the comments of #49, #51, as well as the script modifications in #44 as an independent package that can be installed in a SHFB project to automatically use that output.

I am not sure this is possible in the exact form described here, but I wanted to create this issue so it doesn't get lost. 😄

Link to Constructor, Fields, Properties, Methods, and Events pages.

Hello,

I would like to create a link that points to any of the pages listed in the title. However, my understanding is that you can only link to particular constructors, fields, properties, methods, and events (and also namespaces).

You do this by using the cref notation generated by the XML docs:

T:Namespace.Class
F:Namespace.Class.Field
M:Namespace.Class.Method(params...)

and so on....

Instead, what I would like to do is link to the page that list all of the members of that member type. For example, the properties page lists all of the different properties of a class on a single page.

Is this possible? If so, what is the correct cref notation?

MRefBuilder doesn't handle some inherited methods from Generic Classes

When a class has generics in it and has overloaded methods which take an array as the parameter, MRefBuilder incorrectly repeats the first method, without documenting the other methods. It seems the problem is coming from the MatchParameters method not actually checking if the parameter types of the array match, instead just returning true for the first candidate selected. A sample project demonstrating this behavior can be found at: https://github.com/ternst55/TestProject/blob/master/TestProject/HelloWorld.cs

Question: List all classes tagged with a specific (custom) tag

Is there a way to create a list of all classes tagged with a specific (custom) tag in a Sandcastle documentation?

I'm using a custom tag to mark specific behavior in my classes. I mapped this tag in main_conceptual.xsl and the content is shown at the documentation sheet of each class.

Now I want create a special page (as conceptual content?) in the documentation which shows a list of all classes which are tagged with my custom tag. Is there a possibility to do this using sandcastle help file builder(SHFB)? Perhaps in the .xsl transformations? Or using MAML?

Support per-version setting of ripOldApis

Moved from CodePlex
Originally submitted by sharwell

I'm trying to use the Version Builder plugin for two purposes:

  • For identifying supported versions of the .NET Framework (e.g. .NET Framework 3.5, 4.0, 4.5)
  • For identifying supported versions of the library (e.g. 1.0.0, 1.1.0, 1.1.1, 1.2.0)

For versions listed in the .NET Framework group, I want ripOldApis=false. For versions listed for old releases of the library, I want ripOldApis=true for all versions except for the current release.

I have implemented this feature as part of the following pull request:
tunnelvisionlabs/SHFB#76

EWoodruff wrote Aug 29, 2014 at 11:07 AM
Doesn't this change make the existing "rip" option which maps to the "/rip" command line option obsolete? Why would it still be needed? It seems confusing to still have both.

SHFB: Error BE0026: Unable to determine default topic in toc.xml.

I grabbed the latest code a couple days ago, built it and am trying to build our help. I opened our older project file (built using 1.9.1.0), made a few changes (copyright, etc.), but now I'm struggling to get the project built.

Our project has a Content Layout.content file that points to several .aml files. Initially, I was getting BE0026, so I followed the help and made sure one of the topics was marked as the default, but I'm still seeing BE0026 when I try to build.

I'm not sure what else to do.

Thoughts?

Chm HH3002/HH3004 compilation warnings when the directory contains a . (dot)

When you store a Sandcastle project in a directory that contains a dot then the compilation of the chm fails with following warnings:

HHC3004 : warning : AlertCaution.png : The HTML tag "•Yãü¯ø18�¥BÁÁ`ÊIEND®B`‚" is not a valid HTML tag (it does not begin with an alphanumeric character). [E:\Test.Help\Test\Help\Working\Build1xHelpFile.proj]
HHC3004 : warning : AlertNote.png : The HTML tag "ñ+®�ç*x™²<¹$9E�[�-q�WW.�(ÎI�+�6a�aš@.Ây™�2�4�àóÌ ‘..." is not a valid HTML tag (it does not begin with an alphanumeric character). [E:\Test.Help\Test\Help\Working\Build1xHelpFile.proj]
(etc)

And all images in the generated chm are broken (missing).

It doesn't matter which folder has the dot, as long as the full directory has at least 1 dot. In my case it was "E:\Test.Help\Test". When removing the dot then I don't see the warnings anymore.

While this workaround sounds easy, our folders in the development branch are all with a dot. Don't ask me why but this is what has been agreed upon years ago and our build processes do expect a dot :(

Additional NamingMethod Request

Moved from CodePlex
Originally submitted by jbaehr

I'm looking for a GUID-based naming method (Help File Category Property) that groups the html files in subfolders. With a large project like ours the html folder contains nearly 50.000 items, which becomes rather slow when you try to open that folder. I propose a naming method that creates subfolders using the first two chars of the file name, so that "html/b6830e02-f664-c19f-658b-da0d080ebafc.htm" becomes "html/b6/830e02-f664-c19f-658b-da0d080ebafc.htm". This would result in a maximum of 256 folders in the html directory, having only a few hundred items each. The git-scm uses a similar naming scheme for its object database, which works quite well.

NOTE: See the original CodePlex thread (link above) for the full discussion on this issue.

Line indentation issue in a code block containing a token

Moved from CodePlex
Originally submitted by alekdavis

If a code snippet inside of a <code> block starts with a <token> element, new lines will be indented. For example, in the usage information, I use a token element to hold the name of the program executable, such as:

/// <example>
/// <code language="none">
/// <token>FILENAME</token> /a:sometext
/// /b:moretexts
/// /c:evenmoretexts
/// </code>
/// </example>

In the generated CHM file, the second and third lines (/b:moretext and /c:evenmoretext) appear indented.

If I use a hard coded value instead of the token element in the first line, then all lines appear left aligned (as expected) in the CHM file. I am using the latest (as of the time of posting) version of Sandcastle and the Code Block component. This does seem like a bug.

Consider using tunnelvisionlabs/MPFProj10

It's deployed as a NuGet package. It would make sense to move toward using that. However, when I had a quick look at the code a while ago it was missing a few bug fixes that I had in the SHFB copy (one in Utilities.cs related to recursive copies and one in FileNode.cs related to in-place renaming of a file that caused a problem with source control are the two I recall). The code needs to be compared to see if anything else is missing and make them equivalent with regard to fixes. Once done, the local copy of the MPFProj could go away in favor of the package.

Ability to use VS2013 presentation style with full TOC

Our dev shop likes everything about the VS2013 presentation style, but we are interested in making a change to how the TOC behaves. We don't have that much content, and so it is confusing when you click on one of the nodes to view the child content. The rest of the sibling nodes disappear, and you can only see the selected node and its children.

Ideally for us, when you select any nodes beneath the top parent, we'd like to still display the sibling nodes of the selected item, so that people can easily jump around the full TOC.

It looks like this functionality is controlled by the hidden plugin LightweightWebsiteStylePlugIn.cs and that there aren't any configuration options for it.

Is there a way to use the VS2013 style and also persist the full TOC as you click through it? Or would we need to customize our own version of LightweightWebsiteStylePlugIn (or do something else)?

Example for 'MemberName'

I'm interested in including a link on the documentation for each code element that allows a user to easily request sample code. The simplest case might be a link of the following form:

Request an example for this page

It would be interesting but not essential to extend this functionality to include information about the commit hash from which the documentation was created, the source file for the member, etc.

💡 Since I don't have any specific ideas for an implementation, I'm open to suggestions regarding different ways I might proceed in exposing this functionality to users as easily (for the users) as possible.

Unresolved assembly reference: System

I am trying to generate HTML for a project and am getting the following error:

GenerateRefInfo:
MRefBuilder (v2015.1.12.0)
Copyright c 2006-2015, Microsoft Corporation, All Rights Reserved.
Portions Copyright c 2006-2014, Eric Woodruff, All Rights Reserved.
Loaded assembly binding redirect: System, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Version(s) 2.0.5.0 redirect to Version 4.0.0.0
Loaded 1 assemblies for reflection and 6 dependency assemblies.
MRefBuilder : error : Unresolved assembly reference: System (System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes) required by SimpleMvvmToolkit-Common [C:\Projects\SandCastle\Help\Working\GenerateRefInfo.proj]
Last step completed in 00:00:01.7897

I have found various references to using the API to Redirect Assembly binding to the 4.0.0.0 version but when I add the following it doesn't change anything (I still get the error above):

image

If I ignore this file rather than redirect it, the help file will build but I am not sure if I am losing something by ignoring the file. Is there a way to properly redirect the file/version so that it builds without ignoring the file?

HTML content not linked correctly in TOC

I run SHFB (v2015.1.12.0) on an API documentation with conceptional content (i.e. MAML files) and HTML content to generate a website help.
The files are structured in the project as follows:

  • \
    • htmlcontent.html
  • Content\
    • conceptual1.aml
    • conceptual2.aml
      ...

Then, in the table of contents (TOC), I get a structure like this:

  • (Title of conceptual1.aml as defined in .content file)
  • (Title of conceptual2.aml as defined in .content file)
  • (<title> of htmlcontent.html)

But in the TOC, all pages a linked using relative URIs that do not define a path. As the TOC is in the html folder of the generated web, all links point to the same folder. htmlcontent.html is copied to the resulting web, but not to the html folder, so that the link does not work.

I already played with the location of the htmlcontent.html file within the project a bit: whenever I put it in a folder (like Content\htmlcontent.html), this folder is part of the TOC:

  • (Conceptual pages like above)
  • Content
    • (<title>of htmlcontent.html)

Unfortunately this does not change the link (href), but only introduces a "topic" in the TOC.

Do I miss a setting in the project file or on the HTML content files? How can I influence the links in the TOC - or the location of the HTML content in the generated web help?

-Thomas

Markdown formatting in HTML output

I'm wondering if it is possible to use Markdown to add plain text formatting in documentation comments that will then be transformed (via Markdown) to be HTML in the generated documentation. For example if I have:

    /// <summary>
    /// This awesome class provides the following features:
    ///
    /// * Makes the coffee
    /// * Washed the dishes
    /// * Takes out the rubbish
    /// </summary>
    public class Awesome

The output would be the normal HTML template that Sandcastle provides, but rather than plain text for the summary it would be Markdown HTML.

I've seen other requests for complete Markdown output (#8) for example, and I might be misunderstanding or completely missing an existing feature, for this, but it would be great if we could plain text format comments.

TODO: Add Project Name

I am just getting started in some help authoring and put together a very simple sample to get to know the system. I "borrowed" the MAML from somewhere on the internet and changed it. However when I compile it into a chm, my topic shows this after the question mark help logo:
Welcome to the [TODO: Add project name]
I don't see any documentation for this. In your help, it says to post questions on this type of thing on CodePlex, but followed you here. Don't know if the protocol is the same, so I just took the chance.

So how do I fix this. Don't see a reference to Project Name in any properties. Don't see a tag anywhere I can set. Don't even know where the "Welcome to the " portion of the heading came from. So I am at a loss here.

It seems like there are some of these TODO things are inserted by SHFB. Unfortunately, it also appears that they are put into the sample or templates, and I have no idea what is coming from samples and what is coming from SHFB trying to tell me to do something. Or do I have even that wrong? If I am right, it would be helpful to distinguish between the two.

inheritdoc components

Hey,

Is there any feasible way to use the logic that processes <inheritdoc /> to post-process an IntelliSense file that is produced by a build process? I was digging thru the code base but couldn't see where this logic lives.

Basically I want to be able to use <inheritdoc /> when commenting the API but then have build produce an xml file that VS can consume for IntelliSense... was hoping to re-use what you've already implemented.

~Rowan

Fail to use NamespaceGroupDoc class to document namespace group

Hi,

First of all, great thanks for this documentation tools and for the regular improvements this tool benefits !
Working on a thin wrapper for a C++ library, I use SHFB to generate the documentation of the wrapped library.
I try to use the NamespaceGroupDoc feature as mentionned here http://ewsoftware.github.io/SHFB/html/48f5a893-acde-4e50-8c17-72b83d9c3f9d.htm.
What I understood of this feature is that it gives the capability to document namespace group (i.e. namespace without any class) by providing in the source code a NamespaceGroupDoc class in the same way that NamespaceDoc.
But I fail to have documentation generated for my namespace group. I try different doc format but I have the same result.
Do I misunderstand the meaning of NamespaceGroupDoc feature ?

Thanks.
Jerome
P.S. I use the 2015.1.12.0 version.

Warnings with SHFB + Code Contracts

In my project, I'm using SHFB to generate documentation and [code contracts][2]. I've encountered a very peculiar situation where I have an interface that has an associated contract class and a property with XML doc comments:

/// <summary>Interface which describes an extensible object.</summary>
[ContractClass(typeof(ExtensibleContract))]
public interface IExtensible
{
    /// <summary>Gets the collection of extensions.</summary>
    /// <value>The collection of extensions</value>
    IList<Extension> Extensions { get; }
}

[ContractClassFor(typeof(IExtensible))]
internal abstract class ExtensibleContract : IExtensible
{
    public IList<Extension> Extensions
    {
        get
        {
            Contract.Ensures(Contract.Result<IList<Extension>>() != null);
            return null;
        }
    }
}

But when I try to implement it, like this:

/// <summary>A Foo</summary>
public class Foo : IExtensible
{
    /// <summary>
    /// Initializes a new instance of the <see cref="Foo"/> class.
    /// </summary>
    protected Foo() { this.Extensions = new List<Extension>(); }

    /// <inheritdoc />
    public IList<Extension> Extensions { get; private set; }
}

SHFB generates this warning.

Warning BuildAssembler : warning : ResolveReferenceLinksComponent: [P:My.NameSpace.Foo.Extensions] Unknown reference link target 'M:My.NameSpace.IExtensible.get_Extensions'.

This only seems to happen when I have the ContractClassAttribute on an attribute, and indeed the problem seems to related to the way the code contracts rewriter generates the final interface documentation. I opened up the output assembly in dotPeek and found that it had added the following XML doc comments:

/// In IExtensible ...
/// <getter><ensures csharp="result != null" vb="result <> Nothing">result != null</ensures></getter>
IList<Extension> Extensions { get; }

/// In Foo ...
/// <getter><ensures inheritedFrom="M:My.Namespace.IExtensible.get_Extensions" inheritedFromTypeName="IExtensible" csharp="result != null" vb="result <> Nothing">result != null</ensures></getter>
public IList<Extension> Extensions { get; private set; }

It seems to be this M:….get_Extensions reference in the rewritten code that's the problem.

Just need to link to existing doc pages

I've been scanning thru the docs for sandcastle, and I'm not seeing how to do what I'm trying to do. Before I take the time to download, install, configure, etc, it would be helpful to know that at the end it will do what I need.

In concept, what I need to do seems simple (doesn't everything?). Right now if I press F1 on an interface I have defined in my project, Visual Studio 2010 attempts to open a url formatted something like this:

https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(FOO);k(TargetFrameworkMoniker-".NETFRAMEWORK,VERSION=V4.0.3");k(DevLang-CSHARP)&rd=true

And obviously this fails since there are no docs for "foo" in the .Net 4.0.3 framework on msdn.microsoft.com.

As it happens, the docs that I want to link to already exist online. I just need to be able to change the link that VS uses to find them. Conceptually something like:

[HelpUrl("http://docs.bar.com/lookup/foo.html")]
public interface foo
{
    [HelpUrl("http://docs.bar.com/lookup/foo-Meth1.html")]
    int Meth1();
}

And I need to be able to package this up so people using my assembly can do this too. But I can't quite see how to get there from xmldocs. They all seem to want me to duplicate the text of the docs in the cs files. That's not what I'm looking for at all.

Is sandcastle the right tool for this? Is there an easier way?

Error in German Version

Hi,

there is no problem to build an english version of a help-file. But when I switch to german, I get this error:
"CopyFromIndexComponent: The indexed document 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\de\System.Data.Services.Client.xml' is not a valid XML document. The error message is: Ungültiges Zeichen in der angegebenen Codierung. Zeile 11, Position 10. [C:\Users\Ulli\Documents\Visual Studio 2012\Projects\USB Hid\SimpleGenericHid\Help\Working\BuildReferenceTopics.proj]"

The translation of the german part of the error message "Ungültiges Zeichen in der angegebenen Codierung. Zeile 11, Position 10." is "Invalid character in the given encoding. Line 11, Position 10"

At the specified position is an german umlaut u "ü".
Second: I wonder why version \v.4.0\ is used. The projekt whas build with .NET framework 4.5

Im using a fresh installed version aof Sandcastle 2015.1.12.0

Website Search fails in SearchForKeywords

Using the search from branding-website.js, occasionally seeing some negative indices appearing in the occurrenceIndices array. So that:

// Split out the title, filename, and word count
var matchingIdx = matchingFileIndices[fileIdx];
var fileIndex = fileInfo[matchingIdx].split(/\0/);

causes an exception "fileInfo[matchingIdx] is undefined" and kills the search output - no html is generated and it looks like the search is still ongoing. Could it be an overflow error? The content of the website is > 80,000 pages.

Document only methods and/or classes with a certain attribute

I would like to be able to have a filter of some sort that would allow me to only include classes and/or methods that have the attribute [TestClass] or [TestMethod]. We are using Team Foundation Server test automation and would like to create a Sandcastle help file that only contains the documentation content that is applied to Test Classes and Test Methods headers. I would like to ignore all other documentation headers. I had tried to use the XPath filter, but it seems to only work on exclusion rules, and I am having trouble getting it to do what I want.

Ability to change text for 'Namespaces' node of the TOC

Eric,

I have had some people suggest that I change the 'Namespaces' text in the TOC pages that are generated by the Visual Studio SandCastle project.

image

I did not see any option in the SandCastle project properties to modify the 'Namespace' TOC text.

I have been able to identify the HTML files that have the 'Namespace' text in the TOC. Specifically: the
the 'default topic page', pages that begin with 'N_xxxxxx.htm, and the 'R_Project_xxxxxx.htm' page. I could write some custom routines to find the 'Namespace' text and replace it with their suggestions but this seems like a lot of work for something that could just be a setting.

Is there some modification in a file of the "C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder" directory structure that could be used to change the 'Namespace' TOC text?

Thanks,
-don

SHFB will not run

I installed SHFB and successfully used it a couple of times. then recently i went to use it again, and nothing seems to happen. When i check the Application event log, i see two(2) errors and one(1) informational messages from the attempted run. they are as follows:

Application: SandcastleBuilderGUI.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Configuration.ConfigurationErrorsException
Stack:
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef)
at System.Configuration.BaseConfigurationRecord.GetSection(System.String)
at System.Configuration.ConfigurationManager.GetSection(System.String)
at System.Configuration.ClientSettingsStore.ReadSettings(System.String, Boolean)
at System.Configuration.LocalFileSettingsProvider.GetPropertyValues(System.Configuration.SettingsContext, System.Configuration.SettingsPropertyCollection)
at System.Configuration.SettingsBase.GetPropertiesFromProvider(System.Configuration.SettingsProvider)
at System.Configuration.SettingsBase.GetPropertyValueByName(System.String)
at System.Configuration.SettingsBase.get_Item(System.String)
at System.Configuration.ApplicationSettingsBase.GetPropertyValue(System.String)
at System.Configuration.ApplicationSettingsBase.get_Item(System.String)
at SandcastleBuilder.Gui.StartUp.Main(System.String[])

and

Faulting application name: SandcastleBuilderGUI.exe, version: 15.1.12.0, time stamp: 0x54c6b927
Faulting module name: KERNELBASE.dll, version: 6.3.9600.17415, time stamp: 0x54505737
Exception code: 0xe0434352
Fault offset: 0x0000000000008b9c
Faulting process id: 0xe6c0
Faulting application start time: 0x01d04ba569cd15da
Faulting application path: E:\Program Files (x86)\Sandcastle Help File Builder\SandcastleBuilderGUI.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: a7bb4518-b798-11e4-82ab-54271ebdfa15
Faulting package full name:
Faulting package-relative application ID:

and

Fault bucket 94682567721, type 5
Event Name: CLR20r3
Response: Not available
Cab Id: 0

Problem signature:
P1: SandcastleBuilderGUI.exe
P2: 15.1.12.0
P3: 54c6b927
P4: System.Xml
P5: 4.0.30319.34209
P6: 53489a76
P7: 9bd
P8: 0
P9: IOIBMURHYNRXKW0ZXKYRVFN0BOYYUFOW
P10:

Attached files:
C:\Users\Wesley\AppData\Local\Temp\WER2725.tmp.WERInternalMetadata.xml
C:\Users\Wesley\AppData\Local\Temp\WER291A.tmp.appcompat.txt
C:\Users\Wesley\AppData\Local\Temp\WER295A.tmp.dmp
C:\Users\Wesley\AppData\Local\Temp\WER29E7.tmp.WERDataCollectionFailure.txt

These files may be available here:
C:\Users\Wesley\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_SandcastleBuilde_b4f3b76ab4cc5f1eb3c2b9502447a307eed9bad_c276de63_c0ea29e4

Analysis symbol:
Rechecking for solution: 0
Report Id: a7bb4518-b798-11e4-82ab-54271ebdfa15
Report Status: 4104
Hashed bucket: 9d31aeebfde6bb4a0f6cb4217bf633fe

I tried uninstalling and re-installing in a different location, but the problem persists.

Any Ideas?

Lightweight Website Style Plug-In settings page

Although there are no settings for this plugin it would be nice to have it available in the list of plugins. More specific: I want to be able to disable the plugin.

The reason behind this is that I want to embed the documentation into a website using the VS2013 presentation style. In order to embed it I have to strip some HTML from the topics content. However I cannot process the content HTML on the server-side easily because it is not valid X(HT)ML. Without the Lightweight Website Style Plug-In however valid XML is generated. Of course the ToC is missing then. But transformingWebTOC.xml with XSLT and the files from the html/-directory (which are valid XML) I was able to embed the documentation into the website.

For now I solved this by creating a custom presentation style where I left the Lightweight Website Style Plug-In commented. This works for me, but it has to be maintained over time.

Another alternative for me would be to have another output file format or presentation style that outputs XML for every topic (or have I overseen something and is this already possible?)

Investigate Possibility of Parallel Topic Builds

Moved from CodePlex

Investigate the possibility of having BuildAssembler build topics in parallel. That would require that all build
components in the stack are thread-safe though. Possible changes and issues:

  • Add a configuration property to enable parallel builds but default to the current synchronous build behavior.
  • All build components would need an overriden virtual property to indicate if they support parallel execution. The default if not overridden would be false. Each build component and syntax generator would need checking to make sure it is thread-safe. For components that contain nested components, they would need to check each nested component too.
  • Concurrent updates to static members. Use thread-safe constructs where needed.
  • Use of non-thread-safe objects like the code colorizer. Wrap them in ThreadLocal?
  • Copying of content files. Track source and destination files to copy in thread-safe constructs. Then, when the component is disposed of, copy the content.

Customising API output with Lightweight VS2013 style

What is the best way to customise the layout and style of the VS2013 API output? I have a project which is a combination of additional conceptual content (in old fashioned html), customised to include extra css, js and markup. I would like the styling of this content to be extended to the API documentation. Currently the API documentation has the default black bar at the top for the title and search bar. Obviously I could post-process the generated html to force the content but I'm looking for something that's a bit cleaner and more maintainable.
Thanks.

Implementations of IList create warning related to the indexer

All my classes implementing System.Collections.IList produce this kind of warning:

Warning 23 BuildAssembler : warning : ResolveReferenceLinksComponent: [P:TomsToolbox.ObservableCollections.ObservableListAdapter`1.Item(System.Int32)] MSDN URL not found for target 'P:System.Collections.IList.Item(System.Int32,System.Object)'.

Why is it looking for System.Collections.IList.Item(System.Int32,System.Object) instead of System.Collections.IList.Item(System.Int32)?

Is there a setting or plugin that can fix this?

Im using VS2013, C#, SHFB 2015.1.12.0. The source related to the issues can be found at https://tomstoolbox.codeplex.com/SourceControl/latest

SHFB doesn't find documentation sources with special msbuild flag

On TFS we are using an extra flag for msbuild to separate build output:
msbuild SMA.Runtime.Documentation.sln /p:GenerateProjectSpecificOutputFolder=true

In this case SHFB doesn't find the corresponding dll file to the referenced csproj documentation source.

SHFB: Error BE0040: Project assembly does not exist: D:\xxx.\SMA.Runtime.Documentation\SMA.Runtime.Logging.dll
bei SandcastleBuilder.Utils.BuildEngine.BuildProcess.ValidateDocumentationSources()
bei SandcastleBuilder.Utils.BuildEngine.BuildProcess.Build()

Rework framework metadata and reflection data file handling

Rather than have one Frameworks.xml file, split the framework metadata out into separate files. For SHFB they'll be split out by platform though they could be specific to a single platform and version. This will allow them to be treated like components and will make it easier to add new frameworks in the future. They can also be treated like project-specific components. As such, people could generate their own framework metadata file and reflection data for new platforms/versions without having to wait for support to be built into SHFB.

This will also allow the framework reflection data to be distributed in multiple NuGet packages which can be added to a project along with the core SHFB NuGet package to add framework data for just those frameworks that are needed by the project. This reduces the size of the core package and also gets around the 30MB size restriction on NuGet packages hosted in the public gallery.

Version Builder ripOldApis and extension methods

Moved from CodePlex
Originally submitted by sharwell

When the Version Builder is used, ripOldApis is true, and the old version of the assembly contains an extension method which is no longer present in the new version, the following occurs.

  1. The class where the old extension method was defined does not show the old extension method in the members listing. This is the expected behavior.
  2. The type for which the extension method is defined does show old extension method in its list of extension methods, but it is an unresolved link (build warning, shows as a bold non-hyperlink in the output). I expected the extension method to not be shown.

syntaxSection does not display in developerXmlReference

I am trying to document an XML file and the auto generated file does not display the content.

Neither the 'Syntax section title' or the 'Syntax content' displays. I added a reference to a code snippet and that didn't display either.

SHFB should support reflection.org files as documentation sources

Moved from CodePlex
Originally submitted by mmenningen

The reflection.org files (API descriptions) sometimes have to be generated by tools other than the MRefBuilder. It should be possible to directly include reflection.org as documentation sources. reflection.org should also be supported to resolve references, if possible.

Updated 01/25/2015 - EFW - Reflection files cannot be used to resolve references. That would require parsing them and building the equivalent set of information obtained from an assembly which is just not feasible. Bypassing MRefBuilder and using output generated by some other tool should be possible though.

Remove the dependency on the VSPackage Builder extension (VS2010)

It's not available for VS2013 and going forward I'll need to get by without it. Move the code files in the GeneratedCode\ folder to the root and merge the code into the derived classes where possible. Button bitmap resources images can move to the Resources\ folder.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.