3

我正在从 C# 项目生成 API 参考。该项目是大型解决方案的一部分,并且对程序集和命名空间有很长的命名约定,因此项目中的每个命名空间都类似于 [CompanyName].[System].[Area].[Module].[...](例如 MyBiz.CRM .Sales.Analytics.Persistence.Common 和 MyBiz.CRM.Sales.Analytics.Persistence.Sql)。由于项目中的所有命名空间都以 MyBiz.CRM.Sales 开头。我分别为每个系统和区域生成参考,我想排除 MyBiz.CRM.Sales。在左侧的目录中,仅在标题/标题中提及。

是否可以在 docFX 中或者我需要编写自定义服务器端构建后事件脚本?

提前致谢

4

1 回答 1

1

我也遇到了同样的问题,通过写模板解决了。它唯一做的就是覆盖preTransform你需要在一个名为toc.extension.js. 在那里我去掉了长命名空间前缀。因为我有一个多层目录,所以我递归地这样做。您很可能可以将其硬编码为您需要的级别。我的代码如下所示:

exports.preTransform = function (model) {
  // replace recursively the root namespace by ""
  transformItem(model, 1);
  return model;

  function transformItem(item, level) {
    if (item.name) {
      item.name = item.name.replace("Some.Very.Long.Namespace.Prefix.", '');
    } else {
      item.name = null;
    }

    if (item.items && item.items.length > 0) {
      var length = item.items.length;
      for (var i = 0; i < length; i++) {
        transformItem(item.items[i], level + 1);
      };
    }
  }
}

docfx.json之后,除了会调用钩子的默认模板之外,我只需指定自己的模板。其工作原理如下:

"build": {
    "template": [
        "default",
        "/path/to/your/template/folder"
    ]
}

参考:Docfx:如何创建自定义模板

于 2019-10-22T07:42:55.987 回答