在docfx项目中提取元数据时出错

问题描述

尽管通读了docfx documentation和许多Github问题,但是我无法使docfx项目正常工作。

已采取的步骤:

  1. 初始化根目录docfx init -q
  2. 从根目录docfx build构建(无错误
  3. 投放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 机器上。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...