Publishing API reference for your .NET class library

Problem

Imagine you have a .NET Core class library fully commented with XMLDoc and you want to publish the documentation for your library on the web. Here is where Aistant service (with a special Aistdoc console utility) comes to help.

1. Registration in Aistant

The first, obvious step, is a registering a new account on Aistant (if you don't have it yet). Choose "Empty" option when it asks about your new Knowledge Base's default content.

After the registration please open Users page in Aistant Console and set the password for the special service account (YourTeamID-clientapp@aistant.com) which was created automatically for your team. Save the password somewhere. It will be used to setup the credentials to your Aistant account in the configuration file for AistDoc (see below).

2. Installing AistDoc

Aistdoc utility scans your library assemblies and XML documentation files, generates articles (one article for each class, interface or enum) and uploads them to your knowledge base on Aistant.

NB: Before installing Aistdoc you will need .NET Core SDK (version 2.1 or higher) be installed on your computer. Since we are talking about the publishing of documentation for a .NET library here - we guess you already have one.

Aistdoc is implemented as a .NET Core Global Tool, so its installation is quite simple:

dotnet tool install -g Aistant.DocImport

To update it to the latest version, if it was installed previously, use:

dotnet tool update -g Aistant.DocImport

3. How to use

Preparing your library files

  • Make sure you turned on "XML documentation file" option in all projects for which you plan to publish the documentation.
  • Build all projects in your library.
  • Place all assemblies (DLL files) and XML documentation files to one folder.

Configuration file

Aistdoc reads all settings from a special JSON configuration file. To generate a template for that file use the following command:

aistdoc create -f:<config file name> -m:cs 

Here -f (or --file) parameter allows to specify the name of the config file and -m (or --mode) specifies the mode (either ts for TypeScript or cs for C#).

For example, the following command

aistdoc create -f:mylib.json -m:cs 

will create mylib.json config file in the current folder.

The config file has 2 main sections: aistant and source.
The first one contains the credentials to your Aistant account, the ID of the knowledge base and the URL to the section where your documentation will be published. The second one includes the path to your assemblies and XML files with the documenation.

All properties are well commented. Here is an example of the configuration file (we suppose there that the team's ID is myteam and the knowledge base's ID is mykb):

{
  "aistant": {
    "username": "myteam-clientapp@aistant.com",
    "password": "qwerty!12345",
    "team": "myteam",
    "addVersion": false,
    "publish": true,
    "kb": "mykb",
    "section": {
        "uri": "mylib-api-reference",
        "title": "My Library API reference"
    }
  },
  "source": {
    "mode":"csharp",
    "path": "C:\\Projects\\MyLibrary\\dist",
    "filter": {
		"assembly": "^MyCompany\\.MyLibrary",
		"namespace": ""
    }   
  }
}

The latest (filter) section of the config file contains a regular expression which filters necessary assemblies and/or namespaces

The filter from the example above means that AistDoc takes all assemblies started with MyCompany.MyLibrary and will generate the docs for all classes with any namespace within those files.

Generating and uploading the documentation

When the configuration file is ready you can start generation of the documents and uploading them to Aistant with the followng command:

aistdoc publish --config:<Config file path>

For example:

aistdoc publish --config:mylib.json

Generating the documentation localy

AistDoc has an option which allows you to generate all articles locally - just to check how it works and how many documents you will have totally. For this case you can fill only source section in your configuration file and add --output option to the command:

aistdoc publish --config:mylib.json --output:docs