Update the documentation pages

This commit is contained in:
OpenIddict Bot
2018-01-21 16:06:22 +00:00
parent f163cae6a1
commit e80e69873a
7 changed files with 476 additions and 23 deletions

263
guide/getting-started.html Normal file
View File

@@ -0,0 +1,263 @@
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Getting started </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Getting started ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
</head>
<body data-spy="scroll" data-target="#affix">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../logo.svg" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="">
<h1 id="getting-started">Getting started</h1>
<p>To use OpenIddict, you need to:</p>
<ul>
<li><p><strong>Install the latest <a href="https://www.microsoft.com/net/download">.NET Core 2.x tooling</a> and update your packages to reference the ASP.NET Core 2.x packages</strong>.</p>
</li>
<li><p><strong>Have an existing project or create a new one</strong>: when creating a new project using Visual Studio&#39;s default ASP.NET Core template, using <strong>individual user accounts authentication</strong> is strongly recommended. When updating an existing project, you must provide your own <code>AccountController</code> to handle the registration process and the authentication flow.</p>
</li>
<li><p><strong>Add the appropriate MyGet repositories to your NuGet sources</strong>. This can be done by adding a new <code>NuGet.Config</code> file at the root of your solution:</p>
<pre><code class="lang-xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;configuration&gt;
&lt;packageSources&gt;
&lt;add key=&quot;NuGet&quot; value=&quot;https://api.nuget.org/v3/index.json&quot; /&gt;
&lt;add key=&quot;aspnet-contrib&quot; value=&quot;https://www.myget.org/F/aspnet-contrib/api/v3/index.json&quot; /&gt;
&lt;/packageSources&gt;
&lt;/configuration&gt;
</code></pre></li>
<li><p><strong>Update your <code>.csproj</code> file</strong> to reference <code>AspNet.Security.OAuth.Validation</code> and the <code>OpenIddict</code> packages:</p>
<pre><code class="lang-xml">&lt;PackageReference Include=&quot;AspNet.Security.OAuth.Validation&quot; Version=&quot;2.0.0-*&quot; /&gt;
&lt;PackageReference Include=&quot;OpenIddict&quot; Version=&quot;2.0.0-*&quot; /&gt;
&lt;PackageReference Include=&quot;OpenIddict.EntityFrameworkCore&quot; Version=&quot;2.0.0-*&quot; /&gt;
&lt;PackageReference Include=&quot;OpenIddict.Mvc&quot; Version=&quot;2.0.0-*&quot; /&gt;
</code></pre></li>
<li><p><strong>Configure the OpenIddict services</strong> in <code>Startup.ConfigureServices</code>:</p>
<pre><code class="lang-csharp">public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext&lt;ApplicationDbContext&gt;(options =&gt;
{
// Configure the context to use Microsoft SQL Server.
options.UseSqlServer(configuration[&quot;Data:DefaultConnection:ConnectionString&quot;]);
// Register the entity sets needed by OpenIddict.
// Note: use the generic overload if you need
// to replace the default OpenIddict entities.
options.UseOpenIddict();
});
// Register the Identity services.
services.AddIdentity&lt;ApplicationUser, IdentityRole&gt;()
.AddEntityFrameworkStores&lt;ApplicationDbContext&gt;()
.AddDefaultTokenProviders();
// Register the OAuth2 validation handler.
services.AddAuthentication()
.AddOAuthValidation();
// Register the OpenIddict services.
// Note: use the generic overload if you need
// to replace the default OpenIddict entities.
services.AddOpenIddict(options =&gt;
{
// Register the Entity Framework stores.
options.AddEntityFrameworkCoreStores&lt;ApplicationDbContext&gt;();
// Register the ASP.NET Core MVC binder used by OpenIddict.
// Note: if you don&#39;t call this method, you won&#39;t be able to
// bind OpenIdConnectRequest or OpenIdConnectResponse parameters.
options.AddMvcBinders();
// Enable the token endpoint (required to use the password flow).
options.EnableTokenEndpoint(&quot;/connect/token&quot;);
// Allow client applications to use the grant_type=password flow.
options.AllowPasswordFlow();
// During development, you can disable the HTTPS requirement.
options.DisableHttpsRequirement();
});
}
</code></pre><blockquote><p><strong>Note:</strong> for more information about the different options and configurations available, check out
<a href="https://github.com/openiddict/core/wiki/Configuration-and-options">Configuration and options</a>
in the project wiki.</p>
</blockquote>
</li>
<li><p><strong>Make sure the authentication middleware is registered before all the other middleware, including <code>app.UseMvc()</code></strong>:</p>
<pre><code class="lang-csharp">public void Configure(IApplicationBuilder app)
{
app.UseAuthentication();
app.UseMvc();
}
</code></pre></li>
<li><p><strong>Update your Entity Framework Core context registration to register the OpenIddict entities</strong>:</p>
<pre><code class="lang-csharp">services.AddDbContext&lt;ApplicationDbContext&gt;(options =&gt;
{
// Configure the context to use Microsoft SQL Server.
options.UseSqlServer(configuration[&quot;Data:DefaultConnection:ConnectionString&quot;]);
// Register the entity sets needed by OpenIddict.
// Note: use the generic overload if you need
// to replace the default OpenIddict entities.
options.UseOpenIddict();
});
</code></pre><blockquote><p><strong>Note:</strong> if you change the default entity primary key (e.g. to <code>int</code> or <code>Guid</code> instead of <code>string</code>), make sure to use the <code>services.AddOpenIddict()</code> extension accepting a <code>TKey</code> generic argument and use the generic <code>options.UseOpenIddict&lt;TKey&gt;()</code> overload.</p>
</blockquote>
</li>
<li><p><strong>Create your own authorization controller</strong>:</p>
<p>To <strong>support the password or the client credentials flow, you must provide your own token endpoint action</strong>.
To enable authorization code/implicit flows support, you&#39;ll similarly have to create your own authorization endpoint action and your own views/view models.</p>
<p>The <strong>Mvc.Server sample comes with an <a href="https://github.com/openiddict/openiddict-core/blob/dev/samples/Mvc.Server/Controllers/AuthorizationController.cs"><code>AuthorizationController</code> that supports both the password flow and the authorization code flow and that you can easily reuse in your application</a></strong>.</p>
</li>
<li><p><strong>Enable the corresponding flows in the OpenIddict options</strong>:</p>
<pre><code class="lang-csharp">public void ConfigureServices(IServiceCollection services)
{
// Register the OpenIddict services.
// Note: use the generic overload if you need
// to replace the default OpenIddict entities.
services.AddOpenIddict(options =&gt;
{
// Register the Entity Framework stores.
options.AddEntityFrameworkCoreStores&lt;ApplicationDbContext&gt;();
// Register the ASP.NET Core MVC binder used by OpenIddict.
// Note: if you don&#39;t call this method, you won&#39;t be able to
// bind OpenIdConnectRequest or OpenIdConnectResponse parameters.
options.AddMvcBinders();
// Enable the authorization and token endpoints (required to use the code flow).
options.EnableAuthorizationEndpoint(&quot;/connect/authorize&quot;)
.EnableTokenEndpoint(&quot;/connect/token&quot;);
// Allow client applications to use the code flow.
options.AllowAuthorizationCodeFlow();
// During development, you can disable the HTTPS requirement.
options.DisableHttpsRequirement();
});
}
</code></pre></li>
<li><p><strong>Register your client application</strong>:</p>
<pre><code class="lang-csharp">// Create a new service scope to ensure the database context is correctly disposed when this methods returns.
using (var scope = app.ApplicationServices.GetRequiredService&lt;IServiceScopeFactory&gt;().CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService&lt;ApplicationDbContext&gt;();
await context.Database.EnsureCreatedAsync();
// Note: when using a custom entity or a custom key type, replace OpenIddictApplication by the appropriate type.
var manager = scope.ServiceProvider.GetRequiredService&lt;OpenIddictApplicationManager&lt;OpenIddictApplication&gt;&gt;();
if (await manager.FindByClientIdAsync(&quot;[client identifier]&quot;, cancellationToken) == null)
{
var descriptor = new OpenIddictApplicationDescriptor
{
ClientId = &quot;[client identifier]&quot;,
ClientSecret = &quot;[client secret]&quot;,
RedirectUris = { new Uri(&quot;[redirect uri]&quot;) }
};
await manager.CreateAsync(descriptor, cancellationToken);
}
}
</code></pre></li>
</ul>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/openiddict/openiddict-documentation/blob/dev/guide/getting-started.md/#L1" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
<span>Copyright © 2015-2017 Microsoft<br>Generated by <strong>DocFX</strong></span>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>

124
guide/index.html Normal file
View File

@@ -0,0 +1,124 @@
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Introduction </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Introduction ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
</head>
<body data-spy="scroll" data-target="#affix">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../logo.svg" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="">
<h1 id="introduction">Introduction</h1>
<h2 id="whats-openiddict">What&#39;s OpenIddict?</h2>
<p>OpenIddict aims at providing a <strong>simple and easy-to-use solution</strong> to implement an <strong>OpenID Connect server in any ASP.NET Core 1.x or 2.x application</strong>.</p>
<p>OpenIddict is based on
<strong><a href="https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server">AspNet.Security.OpenIdConnect.Server (codenamed ASOS)</a></strong> to control the OpenID Connect authentication flow and can be used with any membership stack, <strong>including <a href="https://github.com/aspnet/Identity">ASP.NET Core Identity</a></strong>.</p>
<p>OpenIddict fully supports the <strong><a href="http://openid.net/specs/openid-connect-core-1_0.html">code/implicit/hybrid flows</a></strong> and the <strong><a href="https://tools.ietf.org/html/rfc6749">client credentials/resource owner password grants</a></strong>. You can also create your own custom grant types.</p>
<p>Note: OpenIddict natively supports <strong><a href="https://github.com/aspnet/EntityFramework">Entity Framework Core</a></strong> and <strong><a href="https://github.com/aspnet/EntityFramework6">Entity Framework 6</a></strong> out-of-the-box, but you can also provide your own stores.</p>
<blockquote><p>Note: <strong>the OpenIddict 2.x packages are only compatible with ASP.NET Core 2.x</strong>.
If your application targets ASP.NET Core 1.x, use the OpenIddict 1.x packages.</p>
</blockquote>
<h2 id="why-an-openid-connect-server">Why an OpenID Connect server?</h2>
<p>Adding an OpenID Connect server to your application <strong>allows you to support token authentication</strong>.
It also allows you to manage all your users using local password or an external identity provider
(e.g. Facebook or Google) for all your applications in one central place,
with the power to control who can access your API and the information that is exposed to each client.</p>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/openiddict/openiddict-documentation/blob/dev/guide/index.md/#L1" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
<span>Copyright © 2015-2017 Microsoft<br>Generated by <strong>DocFX</strong></span>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>

View File

@@ -5,9 +5,9 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Add your introductions here! </title>
<title>Samples </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Add your introductions here! ">
<meta name="title" content="Samples ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../favicon.ico">
@@ -67,8 +67,18 @@
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="">
<h1 id="add-your-introductions-here">Add your introductions here!</h1>
<h1 id="samples">Samples</h1>
<p><strong><a href="https://github.com/openiddict/openiddict-samples">Specialized samples can be found in the samples repository</a>:</strong></p>
<ul>
<li><a href="https://github.com/openiddict/openiddict-samples/tree/dev/samples/CodeFlow">Authorization code flow sample</a></li>
<li><a href="https://github.com/openiddict/openiddict-samples/tree/dev/samples/ImplicitFlow">Implicit flow sample</a></li>
<li><a href="https://github.com/openiddict/openiddict-samples/tree/dev/samples/PasswordFlow">Password flow sample</a></li>
<li><a href="https://github.com/openiddict/openiddict-samples/tree/dev/samples/ClientCredentialsFlow">Client credentials flow sample</a></li>
<li><a href="https://github.com/openiddict/openiddict-samples/tree/dev/samples/RefreshFlow">Refresh flow sample</a></li>
</ul>
<blockquote><p><strong>Samples for ASP.NET Core 1.x can be found <a href="https://github.com/openiddict/openiddict-samples/tree/master">in the master branch of the samples repository</a></strong>.</p>
</blockquote>
</article>
</div>
@@ -77,7 +87,7 @@
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/openiddict/openiddict-documentation/blob/dev/introduction/index.md/#L1" class="contribution-link">Improve this Doc</a>
<a href="https://github.com/openiddict/openiddict-documentation/blob/dev/guide/samples.md/#L1" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>

View File

@@ -75,6 +75,12 @@
<li>
<a href="index.html" name="" title="Introduction">Introduction</a>
</li>
<li>
<a href="getting-started.html" name="" title="Getting started">Getting started</a>
</li>
<li>
<a href="samples.html" name="" title="Samples">Samples</a>
</li>
</ul> </div>
</div>
</div>

View File

@@ -5,9 +5,9 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>This is the OpenIddict documentation. </title>
<title>OpenIddict: the OpenID Connect server you'll be addicted to </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="This is the OpenIddict documentation. ">
<meta name="title" content="OpenIddict: the OpenID Connect server you'll be addicted to ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="favicon.ico">
@@ -60,9 +60,35 @@
<div class="article row grid">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="">
<h1 id="this-is-the-openiddict-documentation">This is the <strong>OpenIddict documentation</strong>.</h1>
<h1 id="openiddict-the-openid-connect-server-youll-be-addicted-to">OpenIddict: the OpenID Connect server you&#39;ll be addicted to</h1>
<p>Refer to <a href="http://daringfireball.net/projects/markdown/">Markdown</a> for how to write markdown files.</p>
<p>OpenIddict aims at providing a <strong>simple and easy-to-use solution</strong> to implement an <strong>OpenID Connect server in any ASP.NET Core 1.x or 2.x application</strong>.</p>
<div class="row">
<div class="col-md-4">
<div class="panel panel-default" style="min-height: 120px;">
<div class="panel-body">
<p><strong><a href="guide/index.html">Introduction</a></strong></p>
<p>Read an introduction on OpenIddict and the reason it was created.</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default" style="min-height: 120px;">
<div class="panel-body">
<p><strong><a href="guide/getting-started.html">Getting started</a></strong></p>
Get started quickly by working through this step-by-step guide.
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default" style="min-height: 120px;">
<div class="panel-body">
<p><strong><a href="guide/samples.html">Samples</a></strong></p>
<p>View samples implementing the various authorization flows.</p>
</div>
</div>
</div>
</div>
</article>
</div>

View File

@@ -76,11 +76,11 @@
},
{
"type": "Conceptual",
"source_relative_path": "index.md",
"source_relative_path": "guide/getting-started.md",
"output": {
".html": {
"relative_path": "index.html",
"hash": "M6sDZ1fjNVvqojNG/smxVQ=="
"relative_path": "guide/getting-started.html",
"hash": "1XJUTyg0gItxGGe1z7Xn0w=="
}
},
"is_incremental": false,
@@ -88,11 +88,23 @@
},
{
"type": "Conceptual",
"source_relative_path": "introduction/index.md",
"source_relative_path": "guide/index.md",
"output": {
".html": {
"relative_path": "introduction/index.html",
"hash": "wnzg0BTS6pfj9H9FD7MxyA=="
"relative_path": "guide/index.html",
"hash": "RPB+31ltfkC/6PHrk4fVAQ=="
}
},
"is_incremental": false,
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "guide/samples.md",
"output": {
".html": {
"relative_path": "guide/samples.html",
"hash": "KV9on+AGPqCnWLmPoBs8iQ=="
}
},
"is_incremental": false,
@@ -100,11 +112,23 @@
},
{
"type": "Toc",
"source_relative_path": "introduction/toc.yml",
"source_relative_path": "guide/toc.yml",
"output": {
".html": {
"relative_path": "introduction/toc.html",
"hash": "zBXN2iAlKwmnr171wFhgaQ=="
"relative_path": "guide/toc.html",
"hash": "n9Utc5gSWynwMpfSnaYVPA=="
}
},
"is_incremental": false,
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "index.md",
"output": {
".html": {
"relative_path": "index.html",
"hash": "HRJyLPnyGiVyxOQ+haZo9A=="
}
},
"is_incremental": false,
@@ -116,7 +140,7 @@
"output": {
".html": {
"relative_path": "toc.html",
"hash": "1KU0nfPvTSbEzj3d4G0tFA=="
"hash": "bNVS4TxedIkZ+3ds9odx5w=="
}
},
"is_incremental": false,
@@ -136,18 +160,18 @@
"details": "Processor RestApiDocumentProcessor cannot suppport incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.",
"incrementalPhase": "build"
},
"ResourceDocumentProcessor": {
"TocDocumentProcessor": {
"can_incremental": false,
"details": "Processor ResourceDocumentProcessor cannot suppport incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.",
"details": "Processor TocDocumentProcessor cannot suppport incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.",
"incrementalPhase": "build"
},
"ConceptualDocumentProcessor": {
"can_incremental": false,
"incrementalPhase": "build"
},
"TocDocumentProcessor": {
"ResourceDocumentProcessor": {
"can_incremental": false,
"details": "Processor TocDocumentProcessor cannot suppport incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.",
"details": "Processor ResourceDocumentProcessor cannot suppport incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.",
"incrementalPhase": "build"
},
"ManagedReferenceDocumentProcessor": {

View File

@@ -73,7 +73,7 @@
<ul class="nav level1">
<li>
<a href="introduction/index.html" name="" title="Introduction">Introduction</a>
<a href="guide/index.html" name="" title="User guide">User guide</a>
</li>
</ul> </div>
</div>