docfx 做一个和微软一样的文档平台

https://blog.csdn.net/lindexi_gd/article/details/78661304

c#(166) 

版权声明:http://blog.csdn.net/lindexi_gd 本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lindexi_gd/article/details/78661304

目录(?)[+]

开发中,有一句话叫 最不喜欢的是写文档,最不喜欢的是看别人家代码没有文档。那么世界上文档写最 la 好 ji 的就是微软了,那么微软的api文档是如何做的?难道请了很多人去写文档?

实际上微软有工具用来生成 api 文档和教程。

我这里说的微软文档是:https://docs.microsoft.com/en-us/dotnet/articles/csharp/index 这个网站,不是以前的。

微软文档使用的工具是 docfx ,这是一个很好的工具。

本文将告诉大家如何使用这个工具做出和微软一样的文档

下载

第一步是下载,下载地址是 https://github.com/dotnet/docfx/releases 如果觉得github下载太慢,可以下载我上传的:http://download.csdn.net/detail/lindexi_gd/9839609

安装

下载之后需要解压到软件运行的文件夹,假如一般放软件的是在 E:\软件 ,就可以把他解压到这里。

假设解压到 E:\软件\docfx

在使用之前需要确定已经安装.NET CoreMicrosoft .NET Framework 4.6

环境变量

因为这个软件是命令行,所以希望在任何都可以使用,添加软件到环境变量

    setx PATH "%PATH%;E:\软件\docfx\"
  • 1

创建文档文件

首先创建一个文件夹,用来放临时文件

这里使用的文件夹是D:\docfx_walkthrough

然后使用cmd进入这个文件夹。

简单的方法是地址输入就好,不需要打开cmd一点进入

在cmd输入命令 docfx init -q 后面的参数是表示快速,如果希望让他问你,你自己写设置,那么就不要加参数。

输入这个命令会生成docfx_project,这里就是新建的文件,可以看到 docfx.json

这个文件就是设置文件,可以打开看一下

生成文档

现在就可以进行生成文档了,因为默认就有一些文档。

我也觉得快点让你看到这个工具如何使用才是好的,不需要做太多步就可以看到自己弄出来的网站,这个感觉一般还是很好。

在cmd输入下面命令,因为这里的 cmd 没进入 docfx_project ,路径就是这样

    docfx docfx_project/docfx.json
  • 1

可以看到创建了 _site ,这里就是网页,但是本地查看网页不太好,来使用自带的方法。

查看文档

这个工具可以让你从浏览器看到自己的文档,使用方法是在cmd输入代码

    docfx serve docfx_project/_site
  • 1

打开 http://localhost:8080 就可以看到网站啦。

注意,如果你的 8080 端口被占用,可以自己定义打开的哪个

    docfx serve docfx_project/_site  -p 可以用端口
  • 1

添加文档

现在让我们添加自己的文档

打开 articles 文件夹,添加自己的文档,这里添加

    win10 uwp MVVM入门.md

    win10-uwp-快捷键.md
  • 1
  • 2
  • 3

打开 articles 的 toc.yml ,把文件添加进来

- name: win10 uwp MVVM入门
  href: win10 uwp MVVM入门.md
- name: win10-uwp-快捷键
  href: win10-uwp-快捷键.md
  • 1
  • 2
  • 3
  • 4
  • 5

现在已经做好啦

重复 生成文档 和 查看文档 文档两步。

首先关闭 cmd 再打开,生成文档

    docfx.exe ./docfx.json
  • 1

查看文档

    docfx serve _site -p 1560
  • 1

打开 http://localhost:1560/ 就可以看到

可以看到添加文档需要自己写目录,这个不是很好,所以我就写了一个工具来生成。

添加代码文档

api文档是主要的,生成api文档需要安装vs2015以上。

首先进入工程,这里进入工程C:\程序\uwp\uwp\src\Framework\wpfMill

接着使用docfx metadata添加 *.sln

这里使用的是 csproj,两个都是支持的

    docfx metadata ./wpfMill.csproj
  • 1

可以看到文件夹多了 _api

把他剪切到刚才的临时文件

这里是D:\docfx_walkthrough,现在的临时文件看起来是

把 _api 所有文件放到 api

打开 D:\docfx_walkthrough\toc.yml

- name: Articles
  href: articles/
- name: Api Documentation
  href: api/
  homepage: api/index.md
  • 1
  • 2
  • 3
  • 4
  • 5

删除得到

- name: Articles
  href: articles/
- name: Api Documentation
  href: api/    
  • 1
  • 2
  • 3
  • 4

然后重复 生成文档 和 查看文档 文档两步

打开 代码文档 看到

左边和右边看起来还是很好

做自己的修改

我也觉得现在还没有那好,因为图标

默认的有 default iframe.html statictoc

导入微软的代码docfx template export 要哪个

   docfx template export default
  • 1

可以看到多了 _exported_templates 文件

修改他的名字template 然后把 default 所有文件拿出来,放在这个文件里面。

打开docfx.json 修改默认使用的

        "template": [
      "default"
    ]
  • 1
  • 2
  • 3

修改之后

        "template": [
      "template"
    ]
  • 1
  • 2
  • 3

然后修改 template 的图标

现在看起来很好了,但是需要继续修改,可以打开 partials

这里就是所有可以修改的样式

下面来说一个例子:

打开 footer.tmpl.partial

    {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}

<footer>
  <div class="grad-bottom"></div>
  <div class="footer">
    <div class="container">
      <span class="pull-right">
        <a href="#top">Back to top</a>
      </span>
      {{{_appFooter}}}
      {{^_appFooter}}<span>Copyright ? 2015-2017 Microsoft<br>Generated by <strong>DocFX</strong></span>{{/_appFooter}}
    </div>
  </div>
</footer>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

把微软改为自己名字

    {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}

<footer>
  <div class="grad-bottom"></div>
  <div class="footer">
    <div class="container">
      <span class="pull-right">
        <a href="#top">Back to top</a>
      </span>
      {{{_appFooter}}}
      {{^_appFooter}}<span>Copyright ? 2015-2017 lindexi<br>Generated by <strong>DocFX</strong></span>{{/_appFooter}}
    </div>
  </div>
</footer>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

重新生成文档,就可以看到,页面变化了

忽略不使用的api

经常有一些api是不希望显示在文档的。

可以忽略的方法有两个:第一个方法是在生成时添加忽略文件

    docfx.exe metadata -filter 忽略配置文件所在的路径
  • 1

忽略文件的路径可以是相对的。

第二个方法是写在 docfx.json

添加一个属性 filter ,假如使用的忽略文件是 filterConfig.yml ,那么现在的文件就可以看到如下面代码

    {
  "metadata": [
    {
      "src": [
        {
          "files": [
            "src/**.csproj"
          ],
          "exclude": [
            "**/bin/**",
            "**/obj/**"
          ]
        }
      ],
      "dest": "obj/api",
      "filter": "filterConfig.yml"
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

接下来就是如何写 filterConfig.yml 。

这个文件可以包含包括的文件和不包括的,包括的权限比不包括大,默认是包括所有文件

包括的文件使用include 不包括使用 exclude ,看起来的文件是

  - include:
      uidRegex: ^Microsoft\.DevDiv\.SpecialCase
  - exclude:
      uidRegex: ^Microsoft\.DevDiv
  • 1
  • 2
  • 3
  • 4
  • 5

因为 uidRegex 是匹配,所以对于.需要加上\\

强大的ms还可以匹配是什么类型,提供的:

  • Namespace
  • Type
  • Class
  • Struct
  • Enum
  • Interface
  • Delegate
  • Member
  • Event
  • Field
  • Method
  • Property

如果要忽略命名空间是 lindexi.laji 的代码,请看下面代码

      - exclude:
         uidRegex: ^lindexi\.laji
         type: Namespace
  • 1
  • 2
  • 3

原文:http://dotnet.github.io/docfx/index.html

继续在微软上开发

可以看到现在的 docfx 还不够好,于是我继续在微软做的上面开发。

我需要在一个文件夹包含多个项目的情况下,以及包含多个文件夹,里面包含多个项目的情况,可以解析出他们的文档和代码。

我想到的做法是在需要转换的文件夹添加一个文件,这个文件就是配置文件,表示这个文件夹内有哪些文件夹是代码,哪些是文档。对于代码的,需要有哪些是忽略的。

于是程序就获取配置的文件,从文件获取到存在哪些文件夹是需要进行转换的。

然后 遍历整个文件夹,获取文件夹里的配置,从而得到需要进行做的文件夹。

如果文件夹里的配置出错了,如找不到文件或其他的错误,那么报告为警告就好。

程序可以从所有的文件夹获取配置,如果一个文件夹存在配置文件:

docfx.json

那么读取配置文件里存在哪些配置文件,其中,文件的格式为:

Src:
- E:\12
Doc: E:\123123
DocfxFolder:
- E:\文件夹1
- E:\文件夹2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    class Docfx
    {
        /// <summary>
        /// 代码所在的文件
        /// </summary>
        public List<string> Src
        {
            get; set;
        }

        /// <summary>
        /// 文档所在的文件夹
        /// </summary>
        public string Doc
        {
            get; set;
        }

        /// <summary>
        /// 包含需要进行文档的文件夹
        /// <remarks><para>如我有两个文件夹在不同路径,那么可以在这里写这两个文件夹</para>
        /// 或我把这个文件放在和本程序相同的路径,用这个文件来说明我需要转换的文件
        /// </remarks>
        /// </summary>
        public List<string> DocfxFolder
        {
            get; set;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

一般可以使用一个配置告诉程序,需要把几个项目的文档放在一个文件夹里,这样可以做搜索比较好。

于是这个配置就是只有 DocfxFolder 一个属性。一般不可以在使用 DocfxFolder 之后使用 Src 等属性。但是我这里没有做要求,只是判断如果存在 DocfxFolder 就不去读其他属性。

可以允许只有三个属性的一个。


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

原文地址:https://www.cnblogs.com/aaaaq/p/8645740.html

时间: 2024-07-31 10:31:24

docfx 做一个和微软一样的文档平台的相关文章

读写Excel、WORD等微软OLE2组件文档的项目

NPOI 是?POI?项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写. ? Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: HSSF - 提供读写Microsoft Excel XLS格式档案的功能. XSSF - 提供读写Microsoft

调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 7.5 详细错误 - 4

Zeal:一个简单的离线 API 文档浏览器

Zeal 是一个简单的离线 API 文档浏览器,仿照 Dash(一个 OSX 应用) 写成,能在 Linux 和 Windows 上使用. 特点 在你的工作空间的任何地方中,使用 Alt + 空格(也可以自定义)快捷键去进行快速的文档搜索. 一次搜索多个文档集. 不需要网络连接. Zeal 是开源的!遵循 GPL 版权协议: 所有能用在 Dash 上的文档也可以用在 Zeal 中.这里可以看到一系列 Dash 支持的文档集 Zeal 的项目主页在:http://zealdocs.org/ zea

一个导入到本地读取文档的方法

一个导入到本地读取文档的方法 在网页上看到, 发现了一个比较好的插件 简悦 , 可以通过其中的一个功能, 下载为 markdown 文件. 发现是一个很不错的功能. 本来想去找一下, 有没有类似的 书签记录, 类似vim中的mark功能 但 vim 插件感觉有些重, 并且影响好多的快捷键操作. 原文地址:https://www.cnblogs.com/asdfq/p/10994197.html

微软编程规范(文档)

项目编程规范 第一章 概述. 5 术语定义. 5 Pascal 大小写. 5 Camel 大小写. 5 文件命名组织. 5 1.3.1文件命名. 5 1.3.2文件注释. 5 第二章   代码外观. 7 2.1  列宽. 7 2.2  换行. 7 2.3  缩进. 7 2.4  空行. 7 2.5  空格. 8 2.6  括号 - () 8 2.7  花括号 - {} 9 第三章 程序注释. 10 3.1  注释概述. 10 3.2  文档型注释. 10 3.3  单行注释. 11 3.4  注

微软的在线文档存储OneDrive使用帮助

onedrive默认空间5G,对于一般的文档存储够用的,很方便不限速!!! ###官方介绍 https://support.office.com/zh-cn/article/%E4%BA%86%E8%A7%A3-onedrive-files-on-demand-0e6860d3-d9f3-4971-b321-7092438fb38e?ui=zh-CN&rs=zh-CN&ad=CN ps:介绍的不错,get技能! 01.下载 download:  点下载 02.启动 //本地exe启动 C:

做一个真正的自己(文/高莎莎)

我总是很害怕,过去发生的事情忘记吧,发生那些事情并不是你的错,你已经很努力地做得很好了,总是记在心里只会加倍自己的痛苦罢了,应该好好地为自己活着! 不敢发生过什么,你不也是很好地走到了现在,至少到目前为止,一切都尚好,不是吗? 勇敢地向前走,别总有那么多的悲伤,我不相信眼泪可以解决任何事情,虽然我很爱哭吧!别再使你的小脾气,没有人会在意你的忧伤快乐,发小脾气只会让自己不开心罢了,也无须在意所有事情,因为从不会有人在意你,你又何必伤神去在意别人,累了自己别人还毫无反应,别人的一切事情绝不插手,必要

怎样简单的制作一个CHM格式的帮助文档?

http://jingyan.baidu.com/article/d8072ac446eb7bec95cefd0e.html 怎么制作CHM格式电子书 http://jingyan.baidu.com/article/aa6a2c143117530d4d19c45e.html 3款不错的CHM文件制作软件 http://www.360doc.com/content/12/0303/18/4425240_191407623.shtml http://news.mydrivers.com/1/183

抓包工具的使用,为什么要用抓包工具。(因为现在好多公司做接口测试但是不提供接口文档,所以需要我们自己去抓取)

浏览器常用:Chrome/Firefox:F12进行抓包. APP常用:Android/IOS:Fiddler/Charles,进行抓包. 原文地址:https://www.cnblogs.com/wangffeng293/p/11775793.html