问题描述
尽管通读了docfx documentation和许多Github问题,但是我无法使docfx项目正常工作。
已采取的步骤:
- 初始化根目录
docfx init -q
- 从根目录
docfx build
构建(无错误) - 投放
docfx "/user/docfx_project/docfx.json" --serve
Stacktrace:
Error:Error extracting Metadata for /user/docfx_project/src/MyApp/MyApp.csproj,/user/docfx_project/src/MyApp.Tests/MyApp.Tests.csproj: System.NullReferenceException: Object reference not set to an instance of an object
at Microsoft.DocAsCode.Metadata.ManagedReference.ExtractMetadataWorker.SaveAllMembersFromCacheAsync () [0x00380] in <0779a76130d64c11baa2c8c084cbfe7c>:0
at Microsoft.DocAsCode.Metadata.ManagedReference.ExtractMetadataWorker.ExtractMetadataAsync () [0x000c0] in <0779a76130d64c11baa2c8c084cbfe7c>:0
环境:
- OSX 10.13.6
- docfx 2.56.2.0
- .NET Core SDK(3.1.401)
- Mono JIT编译器版本6.10.0.104
项目结构:
docfx-project
|
+-- _site
+-- api
+-- apidoc
+-- articles
+-- docfx.json
+-- images
+-- index.md
+-- obj
+-- src
|
+-- MyApp
|
+-- MyApp.csproj
+-- toc.yml
docfx.json:
{
"Metadata": [
{
"src": [
{
"files": [
"src/**/**.csproj"
]
}
],"dest": "api","disableGitFeatures": false,"disableDefaultFilter": false
}
],"build": {
"content": [
{
"files": [
"api/**.yml","api/index.md"
]
},{
"files": [
"articles/**.md","articles/**/toc.yml","toc.yml","*.md"
]
}
],"resource": [
{
"files": [
"images/**"
]
}
],"overwrite": [
{
"files": [
"apidoc/**.md"
],"exclude": [
"obj/**","_site/**"
]
}
],"dest": "_site","globalMetadataFiles": [],"fileMetadataFiles": [],"template": [
"default"
],"postProcessors": [],"markdownEngineName": "markdig","noLangKeyword": false,"keepFileLink": false,"cleanupCacheHistory": false,"disableGitFeatures": false
}
}
一半
解决方法
我不太清楚为什么会这样,但它在我的 CI 机器上执行的是 export VSINSTALLDIR=
- 换句话说,在运行 VSINSTALLDIR
之前清除 docfx metadata
环境变量。我相信这会影响 docfx 使用的 msbuild(或至少某些 msbuild 文件)的版本。
这是对 other issues in the past 的修复 - 有人声称已经修复了一段时间,但相同的解决方法似乎也适用于这个问题......至少在我的 CI 机器上。