Xml2Doc.Core
2.3.0
dotnet add package Xml2Doc.Core --version 2.3.0
NuGet\Install-Package Xml2Doc.Core -Version 2.3.0
<PackageReference Include="Xml2Doc.Core" Version="2.3.0" />
<PackageVersion Include="Xml2Doc.Core" Version="2.3.0" />
<PackageReference Include="Xml2Doc.Core" />
paket add Xml2Doc.Core --version 2.3.0
#r "nuget: Xml2Doc.Core, 2.3.0"
#:package Xml2Doc.Core@2.3.0
#addin nuget:?package=Xml2Doc.Core&version=2.3.0
#tool nuget:?package=Xml2Doc.Core&version=2.3.0
Xml2Doc.Core
Core library for Xml2Doc. It parses C# compiler XML documentation, resolves references and inheritance, builds deterministic documentation models, and renders Markdown.
Version 2.3.0 adds deterministic multi-input aggregation while preserving the existing single-input API.
Supported frameworks
netstandard2.0net8.0net9.0
Single-input example
using Xml2Doc.Core;
using Xml2Doc.Core.Models;
var model = Xml2Doc.Core.Models.Xml2Doc.Load("MyLibrary.xml");
var renderer = new MarkdownRenderer(
model,
new RendererOptions
{
FileNameMode = FileNameMode.CleanGenerics,
RootNamespaceToTrim = "MyCompany.MyProduct",
TrimRootNamespaceInFileNames = true,
LineEndings = LineEndingStyle.Lf
});
renderer.RenderToDirectory("docs");
Multi-input aggregation
using Xml2Doc.Core;
using Xml2Doc.Core.Models;
var model = Xml2Doc.Core.Models.Xml2Doc.LoadAggregate(new[]
{
"ProjectA.xml",
"ProjectB.xml"
});
var renderer = new MarkdownRenderer(
model,
new RendererOptions
{
FileNameMode = FileNameMode.CleanGenerics,
GenerateIndex = true,
LineEndings = LineEndingStyle.Lf
});
renderer.RenderToDirectory("docs");
LoadAggregate canonicalizes, de-duplicates, and ordinally sorts primary input paths before loading. If two primary XML files define the same documentation member ID, loading fails deterministically with XML2DOC006 rather than selecting a winner based on caller order.
Reference XML and inheritance
Reference-only XML can be loaded after the primary model:
model.LoadReferences(new[]
{
"Framework.Contracts.xml"
});
Reference members are available to <inheritdoc /> and reference resolution but do not become primary generated pages.
Renderer options
RendererOptions is a strongly typed record. Its public options are:
FileNameModeRootNamespaceToTrimCodeBlockLanguageTrimRootNamespaceInFileNamesAnchorAlgorithmTemplatePathFrontMatterPathAutoLinkAliasMapPathExternalDocsEmitTocEmitNamespaceIndexBasenameOnlyParallelDegreeGenerateIndexPruneStaleFilesManifestIdentityLineEndingsWarningSinkAliasProviderAnchorGeneratorTemplateRendererFrontMatterAutoLinkerLinkPolicyExternalSymbolResolverSignatureStyleSignatureRendererDiagnosticSink
FileNameMode, AnchorAlgorithm, and LineEndings use the FileNameMode, AnchorAlgorithm, and LineEndingStyle enums respectively. Single-file output is selected through MarkdownRenderer.RenderToSingleFile(...) or RendererRunMode.SingleFile; it is not a RendererOptions property.
Built-in and consumer-provided rendering services use the same renderer pipeline.
Runner pipeline
RendererRunner coordinates output planning and execution around an initialized MarkdownRenderer.
using Xml2Doc.Core.Pipeline;
var runner = new RendererRunner(renderer);
var request = new RendererRunRequest(
"docs",
RendererRunMode.PerType);
var result = runner.Run(request);
The runner is the shared execution boundary used by host integrations for planning, deterministic rendering, incremental write results, pruning, and dry-run behavior.
Determinism and output ownership
- Generated Markdown uses LF by default on every platform.
- Per-type rendering can run in parallel while preserving deterministic output.
- Unchanged files are skipped instead of rewritten.
- Stale pruning is per-type only and requires a stable
ManifestIdentity. - Ownership manifests are stored under
<output-root>/.xml2doc/manifestsand authorize deletion only for the matching invocation identity.
Diagnostics
Core exposes stable diagnostics consumed by the CLI and MSBuild hosts. Aggregation-specific diagnostics are:
XML2DOC006— duplicate documentation-member ownership across primary XML inputs.XML2DOC007is MSBuild-specific and is emitted by repository aggregation ownership validation.
See the repository-level Xml2Doc.md for the complete diagnostic table and host usage examples.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Encodings.Web (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.3.0 | 89 | 8/17/2026 |
| 2.2.0 | 85 | 8/17/2026 |
| 2.1.0 | 96 | 8/16/2026 |
| 2.0.3 | 83 | 8/15/2026 |
| 2.0.2 | 94 | 8/14/2026 |
| 2.0.1 | 97 | 8/14/2026 |
| 2.0.0 | 83 | 8/13/2026 |
| 2.0.0-preview.113-g69c1a44 | 49 | 8/13/2026 |
| 1.4.0 | 90 | 8/13/2026 |
| 1.4.0-preview.111-g7a5369b | 55 | 8/13/2026 |
| 1.4.0-preview.110-g1edd8f0 | 56 | 8/13/2026 |
| 1.4.0-preview.109-g42abc6e | 62 | 8/13/2026 |
| 1.4.0-preview.108-g611e3f5 | 52 | 8/13/2026 |
| 1.4.0-preview.107-gc4dc99b | 51 | 8/13/2026 |
| 1.4.0-preview.106-gffe4bab | 48 | 8/13/2026 |
| 1.4.0-preview.105-gd9e6cf3 | 50 | 8/13/2026 |
| 1.4.0-preview.104-gfa11148 | 52 | 8/13/2026 |
| 1.4.0-preview.103-gc413f43 | 51 | 8/13/2026 |
| 1.4.0-preview.102-g7ed4c9f | 59 | 8/13/2026 |
| 1.4.0-preview.101-g1fbacd3 | 65 | 8/1/2026 |