DocFX:为多个项目生成API文档

Ter*_*mer 7 documentation-generation xml-documentation docfx

我正在开发一个在解决方案中有多个项目的项目.我希望能够从外部目录生成文档,以保持应用程序代码文件夹清洁.当我尝试在docfx.json中设置src目录时,它似乎不喜欢绝对路径,也不喜欢相对路径.

{
  "metadata": 
  [{
         "src": 
         [{
               "files": ["../../../Repos/Wsi.Extranet.CommonServices/Wsi.Extranet.CommonServices/**/*.csproj"]
               "exclude": 
               [
                    "**/obj/**",
                    "**/bin/**",
                    "_site/**"
               ]
        }],
        "dest": "api"
}],
"build": {
"content": [
  {
    "files": [
      "api/**.yml",
      "api/index.md"
    ]
  },
  {
    "files": [
      "articles/**.md",
      "articles/**/toc.yml",
      "toc.yml",
      "*.md"
    ],
    "exclude": [
      "obj/**",
      "_site/**"
    ]
  }
],
"resource": [
  {
    "files": [
      "images/**"
    ],
    "exclude": [
      "obj/**",
      "_site/**"
    ]
  }
],
"overwrite": [
  {
    "files": [
      "apidoc/**.md"
    ],
    "exclude": [
      "obj/**",
      "_site/**"
    ]
  }
],
"src":    "../../../Repos/Wsi.Extranet.CommonServices/Wsi.Extranet.CommonServices",
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
  "default"
],
"postProcessors": [],
"noLangKeyword": false
 }
}
Run Code Online (Sandbox Code Playgroud)

它说它构建正常,但没有找到任何文件,它搜索的目录保留在当前目录中.

D:\temp\WsiApiDocs\docfx_project>docfx metadata
Info: Config file docfx.json found, start generating metadata...
Info: No files are found with glob pattern **/*.csproj, excluding
    **/obj/**,**/bin/**,_site/**, under directory "D:\temp\WsiApiDocs\docfx_project"
Info: Completed executing in 54.0087 milliseconds.


Build succeeded.
    0 Warning(s)
    0 Error(s)
Run Code Online (Sandbox Code Playgroud)

当我尝试将相对路径放在files属性中时,我得到以下内容:

D:\temp\WsiApiDocs\docfx_project>docfx metadata
Info: Config file docfx.json found, start generating metadata...
Info: No files are found with glob pattern
 ../../../Repos/Wsi.Extranet.CommonServices/Wsi.Extranet.CommonServices/**/*.csproj, 
excluding **/obj/**,**/bin/**,_site/**, under directory
 "D:\temp\WsiApiDocs\docfx_project"
**Warning: NOTE that `../` is currently not supported in glob pattern, please use `../` in `src` option instead.**
Info: Completed executing in 48.9621 milliseconds.


Build succeeded with warning.
Warning: NOTE that `../` is currently not supported in glob pattern, please use `../` in `src` option instead.
    1 Warning(s)
    0 Error(s)
Run Code Online (Sandbox Code Playgroud)

所以我的困惑似乎在于如何使用src选项.如果在元数据中使用src,那么似乎我无法指定文件和排除信息.我试图在与元数据相同的级别上使用src属性,但似乎什么也没做.

Mar*_* S. 19

正如错误所述

../ 目前在glob模式中不支持

files,exclude等使用glob模式.通过src以下方式设置基目录:

{
  "metadata": [
    {
      "src": [
        {
          "files": "Repos/Wsi.Extranet.CommonServices/Wsi.Extranet.CommonServices/**.csproj",
          "exclude": [
            "**/obj/**",
            "**/bin/**"
          ],
          "src": "../../.." // <---- base directory
        }
      ],
      "dest": "api"
    }
  ],
  "content": [
    {
      "files": [
        "api/**.yml",
        "api/index.md"
      ]
    }
    // ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

是构建多个项目的例子

  • 我从未见过如此令人困惑的错误消息。使用 src...但 src 是一个数组...不,你必须猜测 src 里面有一个 src。 (4认同)
  • 太棒了...谢谢马库斯!我不知道为什么我要比以前更难.当它说通过src设置基目录时,我以为它是在谈论父src节点.甚至没有想到将子src放在父src节点中.您构建多个项目的链接也非常有用. (2认同)