【DocFX文檔翻譯】演練2: 為文檔網(wǎng)站添加API文檔

演練2: 為文檔網(wǎng)站添加API文檔

完成 演練1: 為文檔網(wǎng)站添加簡單文檔 以后, 我們利用 .md 文件成成一個網(wǎng)站柏靶。我們稱之為 Conceptual Documentation(概念文檔)。在本節(jié)演練中, 我們將學(xué)會如何從.NET 源代碼生成網(wǎng)站辞槐, 我們稱之為 API 文檔. 我們會把 Conceptual Documentation(概念文檔)API 文檔 集成到一個網(wǎng)站, 這樣我們可以無縫的從 概念文檔 導(dǎo)航到 API 文檔,或者從 API 文檔 導(dǎo)航到 概念文檔谓松。在 這里 下載本演練需要用到的文件 .

完成演練1以后, 我們的 D:\docfx_walkthrough\docfx_project 目錄結(jié)構(gòu)如下:

|- index.md
|- toc.yml
|- articles
|    |- intro.md
|    |- details1.md
|    |- details2.md
|    |- details3.md
|    |- toc.yml
|- images
     |- details1_image.png
|- api
     |- index.md
     |- toc.yml

第1步. 添加 C# 項目

  1. D:\docfx_walkthrough\docfx_project 目錄下面創(chuàng)建子 src 目錄. 打開 Visual Studio Community 2015 (或者更高版本) 何恶,在src目錄下創(chuàng)建一個名為 HelloDocfxC# Class Library .在類Class1.cs 中,為類和方法添加如下注釋:
namespace HelloDocfx
{
    /// <summary>
    /// Hello this is **Class1** from *HelloDocfx*
    /// </summary>
    public class Class1
    {
        private InnerClass _class;
        public int Value { get; }

        /// <summary>
        /// This is a ctor
        /// </summary>
        /// <param name="value">The value of the class</param>
        public Class1(int value)
        {
            Value = value;
        }

        public double ConvertToDouble()
        {
            return Value;
        }

        /// <summary>
        /// A method referencing a inner class
        /// </summary>
        /// <param name="name">The name</param>
        /// <param name="inner">A inner class with type <seealso cref="InnerClass"/></param>
        public void SetInnerClass(string name, InnerClass inner)
        {
            inner.Name = name;
            _class = inner;
        }

        public class InnerClass
        {
            public string Name { get; set; }
        }
    }
}

第2步. 為 C# 項目生成元數(shù)據(jù)

在目錄 D:\docfx_walkthrough\docfx_project 下面運行docfx metadata . docfx metadatadocfx 里面注冊的子命令,它會從
docfx.json文件中讀取metadata 配置節(jié). metadata/src/files 配置節(jié)中的 [ "src/**.csproj" ] 告訴 docfxsrc 子目錄中檢索所有的 csproj 生成元數(shù)據(jù)寄啼。

"metadata": [
    {
      "src": [
        {
          "files": [
            "src/**.csproj"
          ],
          "exclude": [
            "**/bin/**",
            "**/obj/**",
            "_site/**"
          ]
        }
      ],
      "dest": "api"
    }
  ]

操作將會在 api 目錄生成一些 YAML 文件. YAML 文件包含從 C# 源代碼中抽取出來的數(shù)據(jù)模型恩够。YAML 是 docfx使用的元數(shù)據(jù)格式背率。 一般性元數(shù)據(jù)規(guī)范 中定義了數(shù)據(jù)結(jié)構(gòu),并且 .NET 元數(shù)據(jù)規(guī)范 中定義了 “docfx” 可以使用的.NET語言的元數(shù)據(jù)結(jié)構(gòu)话瞧。

|- HelloDocfx.Class1.InnerClass.yml
|- HelloDocfx.Class1.yml
|- HelloDocfx.yml
|- toc.yml

第3步. 生成并預(yù)覽網(wǎng)站

運行 docfx命令。 docfx 挨個讀取執(zhí)行目錄中定義的 docfx.json 并執(zhí)行. 我們的 docfx.json 定義了 metadata 以及 build, 所以運行 docfx 的時候, 我們實際執(zhí)行了 docfx metadata 以及 docfx build, 并且會生成網(wǎng)站寝姿。

運行 docfx serve _site 命令,生成網(wǎng)站如下

Step3
.

第4步. 添加另外一個 API 文檔

D:\docfx_walkthrough\docfx_project下面創(chuàng)建另外一個 src2 子目錄 . 除了可以從項目文件生成API文檔外交排,docfx 還可以直接從源代碼生成文檔。 讓我們創(chuàng)建一個“Class2.cs”饵筑,如下所示:

namespace HelloDocfx
{
    /// <summary>
    /// Hello this is **Class2** from *HelloDocfx*
    /// </summary>
    public class Class2
    {
        private InnerClass _class;
        public int Value { get; }

        /// <summary>
        /// This is a ctor
        /// </summary>
        /// <param name="value">The value of the class</param>
        public Class2(int value)
        {
            Value = value;
        }

        public double ConvertToDouble()
        {
            return Value;
        }

        /// <summary>
        /// A method referencing a inner class
        /// </summary>
        /// <param name="name">The name</param>
        /// <param name="inner">A inner class with type <seealso cref="InnerClass"/></param>
        public void SetInnerClass(string name, InnerClass inner)
        {
            inner.Name = name;
            _class = inner;
        }

        public class InnerClass
        {
            public string Name { get; set; }
        }
    }
}

按照下面的方式把他添加到我們的 docfx.json 文件的 metadata 配置節(jié):

"metadata": [
    {
      "src": [
        {
          "files": [
            "src/**.csproj"
          ],
          "exclude": [
            "**/bin/**",
            "**/obj/**",
            "_site/**"
          ]
        }
      ],
      "dest": "api"
    },
    {
      "src": "src2/**.cs",
      "dest": "api-vb"
    }
  ]

這意味著 “src2 / ** .cs” 中的YAML元數(shù)據(jù)文件被生成到“api-vb”文件夾中埃篓。 我們還需要在 build 配置節(jié)中包含生成的YAML文件:

  "build": {
    "content": [
      {
        "files": [
          "api-vb/**.yml"
        ]
      }
      ...

為了組織和顯示到我們的文檔1網(wǎng)站,我們還需要修改我們的 D:\docfx_walkthrough\docfx_project\toc.yml 文件根资。 不要忘記為href'的值附加斜杠/`架专。

- name: Articles
  href: articles/
- name: Api Documentation
  href: api/
  homepage: api/index.md
- name: Another Api Documentation
  href: api-vb/

好了,讓我們再次運行 docfx --serve 命令, 網(wǎng)站如下所示:

Step4
.

總結(jié)

在本演練中同窘,我們生成一個包含概念文檔和** API文檔的網(wǎng)站。 在即將到來的一系列高級演練中部脚,我們將學(xué)習“docfx”中的高級概念想邦,例如文章之間的引用,其他文檔的外部引用等委刘。我們還將學(xué)習定制我們的網(wǎng)站丧没,從主題到布局 到元數(shù)據(jù)提取。

更多相關(guān)文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锡移,一起剝皮案震驚了整個濱河市呕童,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淆珊,老刑警劉巖夺饲,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異套蒂,居然都是意外死亡钞支,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門操刀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烁挟,“玉大人,你說我怎么就攤上這事骨坑『成ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵欢唾,是天一觀的道長且警。 經(jīng)常有香客問我,道長礁遣,這世上最難降的妖魔是什么斑芜? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮祟霍,結(jié)果婚禮上杏头,老公的妹妹穿的比我還像新娘。我一直安慰自己沸呐,他們只是感情好醇王,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著崭添,像睡著了一般寓娩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天棘伴,我揣著相機與錄音寞埠,去河邊找鬼。 笑死排嫌,一個胖子當著我的面吹牛畸裳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淳地,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怖糊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颇象?” 一聲冷哼從身側(cè)響起伍伤,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遣钳,沒想到半個月后扰魂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蕴茴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年劝评,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦淀。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒋畜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撞叽,到底是詐尸還是另有隱情姻成,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布愿棋,位于F島的核電站科展,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏糠雨。R本人自食惡果不足惜才睹,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甘邀。 院中可真熱鬧砂竖,春花似錦、人聲如沸鹃答。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽测摔。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锋八,已是汗流浹背浙于。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挟纱,地道東北人羞酗。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像紊服,于是被迫代替她去往敵國和親檀轨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容