dotnet / dotnet/docfx

[Bug] Files without managed metadata break docfx

Open
#10,682 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.4k
Forks
890
Avg merge
2h 11m
Merged PRs (30d)
10

Description

Unmanaged dependencies break generation of documentation process with exception:

```
MetadataFileNotSupportedException: PE file does not contain any managed metadata.
at ctor(MetadataFileKind kind, string fileName, PEReader reader, MetadataReaderOptions
metadataOptions) in MetadataFile.cs:245
at ctor(string fileName, PEReader reader, MetadataReaderOptions metadataOptions) in PEFile.cs:49
at ctor(string fileName, PEStreamOptions streamOptions, MetadataReaderOptions metadataOptions) in
PEFile.cs:39
at IEnumerable GetReferenceAssemblies(string assemblyPath, MetadataReference[] references)
in CompilationHelper.cs:169
at (Compilation, IAssemblySymbol) CreateCompilationFromAssembly(string assemblyPath, bool
includePrivateMembers, params MetadataReference[] references) in CompilationHelper.cs:109
at async (List> symbol) Compile(ExtractMetadataConfig
config) in DotnetApiCatalog.Compile.cs:113
at async Task g__Build|6_0(ExtractMetadataConfig config, DotnetApiOptions options) in
DotnetApiCatalog.cs:85
at async Task Exec(MetadataJsonConfig config, DotnetApiOptions options, string configDirectory,
string outputDirectory) in DotnetApiCatalog.cs:71
at void b__0() in DefaultCommand.cs:45
at int Run(LogOptions options, Action run) in CommandHelper.cs:48
at int Execute(CommandContext context, Options options, CancellationToken cancellationToken) in
DefaultCommand.cs:31
at int Execute(CommandContext context, TSettings settings) in CancellableCommandBase.cs:24
at Task Execute(CommandContext context, CommandSettings settings) in CommandOfT.cs:40
at async Task Execute(CommandTree leaf, CommandTree tree, CommandContext context,
ITypeResolver resolver, IConfiguration configuration) in CommandExecutor.cs:166
```

**To Reproduce**
Steps to reproduce the behavior:
1. Setup metadata section like:
```json
"metadata": [
{
"src": [
{
"src": "../../src",
"files": ["**/bin/Release/**.dll"]
}
],
"dest": "api"
}
],
```
2. Place unmanaged dll into `Release` folder for simulating unmanaged dependency;
3. Run `docfx docfx.json --serve`

**Expected behavior**
Just skip unmanaged items.

**Context:**
- OS: Windows
- Docfx version: 2.78.3+850a61c2ecb83b0bda21448f1393e480934556fd

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.