Merge feature throws NullReferenceException
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 890
- Avg merge
- 2h 11m
- Merged PRs (30d)
- 10
Description
Here are the details for an issue I encountered after adding the merge section to the docfx.json file. Thank you in advance for your help
**DocFX Version Used**: 2.40.7.49614
**Template used**: contain custom template
**Steps to Reproduce**:
docfx.json that works:
```
{
"metadata": [
{
"src": [
{
"cwd": "../Library/",
"files": [
"**.csproj"
],
"exclude": [
"obj/**",
"bin/**",
"_site/**"
]
}
],
"dest": "api",
"properties": { "TargetFramework": "netstandard2.0" }
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md",
"toc.yml",
"*.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"resource": [
{
"files": [
"logo.svg"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"bin/templates/Library"
],
"postProcessors": [],
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false
}
}
```
docfx.json that does not work:
```
{
"metadata": [
{
"src": [
{
"cwd": "../Library/",
"files": [
"**.csproj"
],
"exclude": [
"obj/**",
"bin/**",
"_site/**"
]
}
],
"dest": "tmp/api/netstandard2.0",
"properties": { "TargetFramework": "netstandard2.0" }
}
,{
"src": [
{
"cwd": "../Library/",
"files": [
"**.csproj"
],
"exclude": [
"obj/**",
"bin/**",
"_site/**"
]
}
],
"dest": "tmp/api/net461",
"properties": { "TargetFramework": "net461" }
}
],
"merge": {
"content": [
{
"files": "*.yml",
"src": "tmp/api/netstandard2.0"
},
{
"files": "*.yml",
"src": "tmp/api/net461"
}
],
"fileMetadata": {
"platform": {
"tmp/api/netstandard2.0/*.yml": [
"netstandard2.0"
],
"tmp/api/net461/*.yml": [
"net461"
]
}
},
"dest": "api"
},
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md",
"toc.yml",
"*.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"resource": [
{
"files": [
"logo.svg"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"bin/templates/Library"
],
"postProcessors": [],
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false
}
}
```
**Expected Behavior**:
It should merge the yml files taken from their respective folders for each TargetFramework and merge into the api folder.
**Actual Behavior**:
Build process errors out as follows:
```
=== Building DocFX site under directory "C:\Projects\TestLibrary\DocFX\_site"...
[19-01-17 06:11:05.533]Info:[MetadataCommand.ExtractMetadata]Environment variable VSINSTALLDIR is set to C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\, it is used as the inner compiler.
[19-01-17 06:11:05.772]Info:[MetadataCommand.ExtractMetadata]Loading projects...
[19-01-17 06:11:08.330]Info:[MetadataCommand.ExtractMetadata]Cache for C:/Projects/TestLibrary/Library/Library.csproj in C:\Projects\TestLibrary\Library\obj\xdoc\cache\final\-783017119 is not valid: Could not find a part of the path 'C:\Projects\TestLibrary\DocFX\api\.manifest'., rebuild...
[19-01-17 06:11:08.332]Info:[MetadataCommand.ExtractMetadata]Generating metadata for each project...
[19-01-17 06:11:09.486]Info:[MetadataCommand.ExtractMetadata]'C:/Projects/TestLibrary/Library/Library.csproj' keep up-to-date since '2019-01-17 6:09:39 PM', cached intermediate result 'C:/Projects/TestLibrary/Library/obj/xdoc/cache/obj\naqryuvn.05x' is used.
[19-01-17 06:11:10.513]Info:[MetadataCommand.ExtractMetadata]Loading projects...
[19-01-17 06:11:10.812]Info:[MetadataCommand.ExtractMetadata]Generating metadata for each project...
[19-01-17 06:11:13.780]Info:[MetadataCommand]Completed Scope:MetadataCommand in 8257.2903 milliseconds.
[19-01-17 06:11:13.794]Info:[MergeCommand.Merge Metadata]Start merge metadata...
[19-01-17 06:11:13.848]Error:[MergeCommand]System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.DocAsCode.Build.Engine.HostServiceCreator.LoadModels(IEnumerable`1 files, DocumentBuildParameters parameters, IDocumentProcessor processor)
at Microsoft.DocAsCode.Build.Engine.HostServiceCreator.CreateHostService(DocumentBuildParameters parameters, TemplateProcessor templateProcessor, IMarkdownService markdownService, IEnumerable`1 metadataValidator, IDocumentProcessor processor, IEnumerable`1 files)
at Microsoft.DocAsCode.Build.Engine.SingleDocumentBuilder.Build(IDocumentProcessor processor, DocumentBuildParameters parameters, IMarkdownService markdownService)
at Microsoft.DocAsCode.SubCommands.MetadataMerger.MergePageViewModel(MetadataMergeParameters parameters)
at Microsoft.DocAsCode.SubCommands.MetadataMerger.Merge(MetadataMergeParameters parameters)
at Microsoft.DocAsCode.SubCommands.MergeCommand.MergeDocument(String baseDirectory, String outputDirectory)
[19-01-17 06:11:13.851]Info:[MergeCommand]Completed Scope:MergeCommand in 69.9986 milliseconds.
[19-01-17 06:11:13.972]Info:[BuildCommand]6 plug-in(s) loaded.
[19-01-17 06:11:14.012]Info:[BuildCommand]Markdown engine is dfm
[19-01-17 06:11:14.300]Info:[BuildCommand]Cannot load build info: 'build.info' not found under 'C:\Projects\TestLibrary\DocFX\obj\.cache\build'
[19-01-17 06:11:14.324]Info:[BuildCommand.BuildCore.Build Document]Max parallelism is 8.
[19-01-17 06:11:14.389]Info:[BuildCommand.BuildCore.Build Document.Prepare.CreateIncrementalBuildContext]Group: , build strategy: IsFullBuild, details: Cannot build incrementally because last build info is missing.
[19-01-17 06:11:14.513]Info:[BuildCommand.BuildCore.Build Document.CompilePhaseHandlerWithIncremental.ResourceDocumentProcessor]Building 1 file(s) in ResourceDocumentProcessor(ValidateResourceMetadata)...
[19-01-17 06:11:14.515]Info:[BuildCommand.BuildCore.Build Document.CompilePhaseHandlerWithIncremental.ConceptualDocumentProcessor]Building 1 file(s) in ConceptualDocumentProcessor(BuildConceptualDocument=>CountWord=>ValidateConceptualDocumentMetadata)...
[19-01-17 06:11:14.515]Info:[BuildCommand.BuildCore.Build Document.CompilePhaseHandlerWithIncremental.TocDocumentProcessor]Building 1 file(s) in TocDocumentProcessor(BuildTocDocument)...
[19-01-17 06:11:14.530]Warning:[BuildCommand.BuildCore.Build Document.CompilePhaseHandlerWithIncremental.TocDocumentProcessor.Prebuild.BuildTocDocument](toc.yml)Unable to find either toc.yml or toc.md inside api/. Make sure the file is included in config file docfx.json!
[19-01-17 06:11:15.240]Info:[BuildCommand.BuildCore.Build Document.LinkPhaseHandlerWithIncremental.Apply Templates]Applying templates to 3 model(s)...
[19-01-17 06:11:15.382]Info:[BuildCommand.BuildCore.Build Document]XRef map exported.
[19-01-17 06:11:15.534]Info:[BuildCommand.Postprocess]Manifest file saved to manifest.json.
[19-01-17 06:11:15.600]Info:[BuildCommand]Completed building documents in 1621.3029 milliseconds.
[19-01-17 06:11:15.603]Info:[BuildCommand]Completed Scope:BuildCommand in 1751.3214 milliseconds.
[19-01-17 06:11:15.603]Info:Completed in 10084.7831 milliseconds
Build failed.
[19-01-17 06:11:15.612]Warning:[BuildCommand.BuildCore.Build Document.CompilePhaseHandlerWithIncremental.TocDocumentProcessor.Prebuild.BuildTocDocument](toc.yml)Unable to find either toc.yml or toc.md inside api/. Make sure the file is included in config file docfx.json!
[19-01-17 06:11:15.613]Error:[MergeCommand]System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.DocAsCode.Build.Engine.HostServiceCreator.LoadModels(IEnumerable`1 files, DocumentBuildParameters parameters, IDocumentProcessor processor)
at Microsoft.DocAsCode.Build.Engine.HostServiceCreator.CreateHostService(DocumentBuildParameters parameters, TemplateProcessor templateProcessor, IMarkdownService markdownService, IEnumerable`1 metadataValidator, IDocumentProcessor processor, IEnumerable`1 files)
at Microsoft.DocAsCode.Build.Engine.SingleDocumentBuilder.Build(IDocumentProcessor processor, DocumentBuildParameters parameters, IMarkdownService markdownService)
at Microsoft.DocAsCode.SubCommands.MetadataMerger.MergePageViewModel(MetadataMergeParameters parameters)
at Microsoft.DocAsCode.SubCommands.MetadataMerger.Merge(MetadataMergeParameters parameters)
at Microsoft.DocAsCode.SubCommands.MergeCommand.MergeDocument(String baseDirectory, String outputDirectory)
1 Warning(s)
1 Error(s)
```
Contributor guide
Assessment
This issue has not been assessed yet.