久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

NDoc 用户指南(转)

發(fā)布時(shí)間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NDoc 用户指南(转) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

  • 歡迎使用 NDoc
    • What's New?
    • 已知問(wèn)題
  • 快速教程
    • 配置您的 C# 項(xiàng)目
    • “裝飾”您的代碼
      • NDoc 支持的標(biāo)記
      • NDoc 支持的屬性 (Attribute)
    • 新建 NDoc 項(xiàng)目
  • NDoc 設(shè)計(jì)器
    • 選項(xiàng)
  • NDoc 命令行工具
    • 使用 NDoc 命令行自動(dòng)生成代碼文檔
  • NDoc 文檔引擎
    • VS.NET 文檔引擎
      • 指向其他文檔集合的 XLinks
      • 與 Visual Studio .NET IDE 的集成
      • Microsoft Help 2 部署
    • MSDN 文檔引擎
    • MSDN 2003 文檔引擎
    • XML 文檔引擎
    • JavaDoc 文檔引擎
    • Linear HTML 文檔引擎
    • LaTeX 文檔引擎
  • NDoc 支持的標(biāo)記
    • 標(biāo)記用法
    • <c>
    • <code>
    • <event>
    • <example>
    • <exception>
    • <exclude>
    • <include>
    • <list>
    • <note>
    • <overloads>
    • <para>
    • <param>
    • <paramref>
    • <permission>
    • <preliminary>
    • <remarks>
    • <returns>
    • <see>
    • <seealso>
    • <summary>
    • <threadsafety>
    • <value>
  • 定義您自己的標(biāo)記
    • 可用 Section 的列表
  • NDoc 開(kāi)發(fā)者參考
  • 加入 NDoc 開(kāi)發(fā)
  • 支持資源

關(guān)于 NDoc
 NDoc 可以將 C#.NET 編譯生成的程序集和對(duì)應(yīng)的 /doc XML 文檔,自動(dòng)轉(zhuǎn)換成如 .NET Framework SDK 類(lèi)庫(kù)文檔或者 MSDN Library 在線(xiàn) .NET 類(lèi)庫(kù)文檔形式的代碼文檔,讓您快速擁有專(zhuān)業(yè)級(jí)的類(lèi)庫(kù)API 文檔。(VB.NET 通過(guò)第三方插件如 VBCommenter 的支持,也可以生成 XML 文檔。)

 NDoc 代碼文檔的樣式包括 HTML Help 1 (即 *.CHM 格式),Microsoft Help 2 (即以形如 ms-help://... 的 URI 地址訪(fǎng)問(wèn)的文檔),以及 MSDN 在線(xiàn)網(wǎng)頁(yè)樣式的 .NET Framework 類(lèi)庫(kù)文檔。

NDoc 為開(kāi)放源代碼項(xiàng)目,采用 GNU General Public Licence 授權(quán)協(xié)議(除非您的軟件/項(xiàng)目也采用 GPL 協(xié)議開(kāi)放源代碼,否則您不能在您的軟件/項(xiàng)目中使用 NDoc 源代碼中的任何部分)。更多的授權(quán)問(wèn)題,請(qǐng)參見(jiàn) GNU FAQ。

感謝您使用我們的軟件,也期待著您的參與(建議、BUG 反饋、代碼貢獻(xiàn))!

使用 NDoc 之前
請(qǐng)閱讀 GNU General Public Licence 和 GNU FAQ。

請(qǐng)閱讀 已知問(wèn)題。

請(qǐng)閱讀 必要的幫助文件編譯器。

NDoc 各本地化版本
 英文版: NDoc in English
 簡(jiǎn)體中文版: NDoc in Simplified Chinese
 德文版: NDoc in German
 日文版: NDoc in Japanese
 (此列表可能并不完整。歡迎大家給我發(fā)送更多關(guān)于 NDoc 的本地化版本的網(wǎng)址!)

關(guān)于中文版
 此 NDoc 1.3 (中文版) 由 破寶(percyboy) 翻譯,遵循 GPL 協(xié)議的要求發(fā)布源代碼。有關(guān)中文版的翻譯問(wèn)題和 bug 等,都可以通過(guò)我的博客和我聯(lián)系。

NDoc 1.3 - What's new?
 NDoc 1.3 包含了大量更新和改進(jìn),也修復(fù)了許多 bug。

亮點(diǎn)
 NDoc 1.3 包含了許多新功能:

  • 完全重寫(xiě)了 Microsoft Help 2 文檔引擎,即 "VS.NET 2003 文檔引擎"。
  • 支持更多新的注釋標(biāo)記,如 preliminary, threadsafety 和 exclude。
  • 支持 ObsoleteAttribute 和 FlagsAttribute 屬性。
  • NDoc 1.3 改進(jìn)了可擴(kuò)展性,允許您定義自己的注釋標(biāo)記,并控制它們的顯示樣式。
  • 用戶(hù)界面更加友好。
  • 程序集的解析及文檔制作過(guò)程,在性能上有了大的提高。
  • 與 MSDN 各幫助主題更好的共存。

VS.NET 2003 文檔引擎
 新的 VS.NET 2003 文檔引擎用于制作 Microsoft Help 2 形式的文檔,完全按照 Microsoft 的說(shuō)明,在每頁(yè)頭部都加入了特定的 XML 數(shù)據(jù)島,從而和 Visual Studio .NET 2003 合并文檔集合更好的兼容,和 Visual Studio .NET IDE 更好的集成(比如更好的支持“動(dòng)態(tài)幫助”功能等)。

新的文檔引擎可以制作出和最新 Microsoft 文檔格式更為接近的文檔,比如新增的語(yǔ)言篩選器等功能。

更多的細(xì)節(jié)請(qǐng)參看 VS.NET 2003 文檔引擎。

性能
 所有文檔引擎的性能都有很大程度的提高。

  • NDoc 中間 XML 數(shù)據(jù)文件的制作過(guò)程有了相當(dāng)?shù)奶崴?#xff0c;現(xiàn)在這個(gè)過(guò)程在整個(gè)文檔生成過(guò)程中所占的時(shí)間比例已經(jīng)很小了。
  • 頁(yè)面制作的時(shí)間也減少了 20% ~ 50%。
  • 內(nèi)存占用顯著降低了。
  • 命名空間層次結(jié)構(gòu)頁(yè)面的制作過(guò)程,得到了改進(jìn),不再擔(dān)心性能或穩(wěn)定性問(wèn)題了。因此,文檔引擎總是制作命名空間層次結(jié)構(gòu)頁(yè)。

程序集加載
 程序集的加載方法有了不少改進(jìn)。

  • 程序集改變時(shí),GUI 程序不需要重新啟動(dòng)就能反映更新。
  • 大多數(shù)程序集可以從網(wǎng)絡(luò)共享地址加載。但是,因?yàn)?.NET Framework 的安全限制,由托管 C++ 生成的程序集必須在本地磁盤(pán)中,不能從網(wǎng)絡(luò)共享地址中正常加載。
  • 程序集的解析得到了改進(jìn),現(xiàn)在已經(jīng)極少出錯(cuò)了。

國(guó)際化
 NDoc 現(xiàn)在可以正常處理程序集及代碼注釋中包含的非英文字符。除 MSDN 文檔引擎(HTML Help 1 格式)之外,其他文檔引擎都完全支持 Unicode (UTF-8)字符。受 HTML Help 1 的局限,MSDN 文檔引擎不支持混合字符集,這是我們所無(wú)法控制的。

注意,盡管 NDoc 支持多種字符集,但 NDoc 生成的代碼文檔的各個(gè)標(biāo)題、及 NDoc 的界面、提示消息等文本,在 NDoc 1.3 中還未實(shí)現(xiàn)多語(yǔ)言顯示。

NDoc 并行運(yùn)行能力
 多個(gè) NDoc 實(shí)例現(xiàn)在可以同時(shí)并行運(yùn)行。先前的文件鎖定等問(wèn)題已經(jīng)得到解決。

用戶(hù)界面

  • 對(duì)拖放操作的支持。新版本中,您可以直接將程序集從資源管理器中拖曳到 NDoc GUI 的程序集列表中。
  • 錯(cuò)誤處理。新版本的錯(cuò)誤處理得到了顯著的改進(jìn)。
  • 幫助編譯器消息。幫助編譯器的消息被記入 log。如果出錯(cuò),錯(cuò)誤消息被顯示出來(lái)。
  • 屬性網(wǎng)格。屬性網(wǎng)格有了不少加強(qiáng)。
  • 能處理程序集加載錯(cuò)誤。
  • 對(duì)沒(méi)有 XML 文檔的程序集,也能為輸出簡(jiǎn)單的代碼文檔。
  • 對(duì)相對(duì)路徑的支持。一般都是相對(duì)于 NDoc 項(xiàng)目文件。

XML 文檔標(biāo)記
 新標(biāo)記

標(biāo)記說(shuō)明
<exclude/>Directs NDoc to exclude the tagged type or member from the documentation.
The tag overrides all visibility options.
<preliminary>Marks the documentation of a type or member as preliminary.
This tag can include text and block tags like <para> in order to put a custom warning into your help topics about preliminary items.
If the tag is empty, preliminary topics will include the default message:
[This is preliminary documentation and subject to change.]
It is also possible to mark an entire help project as preliminary using the Preliminary project setting.
<devdoc>?

增強(qiáng)的標(biāo)記

標(biāo)記說(shuō)明
<code>
  • "lang" attribute
  • No more <include> to prevent indent
  • "Escaped" attribute
<see>langword

配置
 新配置項(xiàng)
 NDoc 1.3 加入了下面的通用配置項(xiàng):

配置項(xiàng)說(shuō)明
文檔主要配置
CleanIntermediates是否在文檔成功生成后,刪除中間文件。
比如 MSDN 和 VS.NET 文檔引擎會(huì)編譯為單一文件,它們的中間文件包括所有編譯前的網(wǎng)頁(yè)、HTML Help 項(xiàng)目文件等。
FeedbackEmailAddress用戶(hù)反饋接收 Email 地址。將在輸出的代碼文檔每頁(yè)的底部添加放置指向此 Email 地址的超鏈接。
Preliminary若此項(xiàng)為真,文檔引擎將在每個(gè)頁(yè)面中添加紅色的消息“[此文檔為預(yù)發(fā)布版本,在未來(lái)版本中有可能改變。]”。
SdkDocVersion指示文檔引擎應(yīng)將 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)中包含的類(lèi)型的超鏈接指向哪個(gè)版本的 .NET Framework SDK。
SdkDocLanguage指示文檔引擎應(yīng)將 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)中包含的類(lèi)型的超鏈接指向哪種本地化語(yǔ)言版本的 .NET Framework SDK。
屬性(attribute)的輸出
DocumentInheritedAttributes是否輸出從基類(lèi)中繼承而來(lái)的屬性(attribute)。如果 DocumentAttributes = false,則此配置被忽略。
輸出過(guò)濾
DocumentedInheritedMembers如何輸出繼承的成員:可選擇不輸出、只輸出繼承的實(shí)例成員或者是全部繼承成員都輸出。
它有三個(gè)選項(xiàng):
None不輸出繼承的成員。
Instance只輸出繼承的實(shí)例成員。(默認(rèn)選項(xiàng))
InstanceAndStatic輸出全部繼承的實(shí)例和靜態(tài)成員。
DocumentInheritedFrameworkMembers是否輸出從 .NET Framework 中的類(lèi)、結(jié)構(gòu)等繼承下來(lái)的成員。(默認(rèn)為輸出)
注意: 如果 DocumentInheritedMembers 為 None, 此配置被忽略。
DocumentExplicitInterfaceImplementations是否輸出顯式實(shí)現(xiàn)的接口成員。(默認(rèn)為否)
DocumentSealedProtected是否輸出密封類(lèi) (sealed, VB.NET 中為 NotInheritable) 的 protected 成員。(默認(rèn)為否)
注意: 如果 DocumentProtected 為 false,則忽略此項(xiàng)配置。
SkipNamespacesWithoutSummaries是否跳過(guò)缺少概述信息的命名空間。(默認(rèn)為否)

刪除的配置項(xiàng)
 NDoc 1.3 刪除了下面的配置項(xiàng):

配置項(xiàng)說(shuō)明
GetExternalSumeriesNDoc 中間 XML 數(shù)據(jù)文件制作的性能有了相當(dāng)?shù)母倪M(jìn)。因此,總是嘗試為從 .NET Framework 繼承而來(lái)的成員查找摘要信息。
IncludeNamespaceHierarchy命名空間層次結(jié)構(gòu)頁(yè)面的制作過(guò)程,得到了改進(jìn),不再擔(dān)心性能或穩(wěn)定性問(wèn)題了。因此,文檔引擎總是制作命名空間層次結(jié)構(gòu)頁(yè)。

MSDN 文檔引擎
 新配置項(xiàng)
 NDoc 1.3 為 MSDN 文檔引擎加入了下面的配置項(xiàng):

配置項(xiàng)說(shuō)明
文檔主要配置
BinaryToc是否以二進(jìn)制方式創(chuàng)建目錄樹(shù)文件。這將顯著提高大尺寸 CHM 文件的打開(kāi)速度。
默認(rèn)此項(xiàng)被設(shè)置為 true。但啟用此配置項(xiàng),有一些強(qiáng)制的限制必須滿(mǎn)足。如果您遇到問(wèn)題,可以嘗試關(guān)閉此功能。更多細(xì)節(jié)請(qǐng)查看 HTML Help Workshop 的文檔。
Title此文本將顯示在每個(gè)頁(yè)面的左上角,一般填寫(xiě)類(lèi)庫(kù)的名稱(chēng)比較合適。
擴(kuò)展性
ExtensibilityStylesheet用戶(hù)自定義的 NDoc 擴(kuò)展 XSLT 轉(zhuǎn)換文件,用于轉(zhuǎn)換用戶(hù)自定義的特殊標(biāo)記。請(qǐng)參見(jiàn) NDoc 可擴(kuò)展性。
HTML Help 選項(xiàng)
AdditionalContentResourceDirectory頁(yè)面中涉及到的資源文件(如圖片等)所在的目錄。此目錄及其子目錄中的所有文件,將以原有的目錄結(jié)構(gòu)包含進(jìn) HTML Help 項(xiàng)目中,使用相對(duì)路徑的超鏈接不需要做大的調(diào)整。
注意: 此文件夾中第一層次的文件,和 NDoc 生成的 HTML 文件、以及通過(guò) FilesToInclude 包含進(jìn)來(lái)的文件,將處在同一層次上,請(qǐng)依次類(lèi)推其他文件的相對(duì) URL。
LangIDHTML Help 文件的 LangID 設(shè)置。中文版默認(rèn)為 2052。

刪除的配置項(xiàng)
 NDoc 1.3 刪除了下面的配置項(xiàng):

配置項(xiàng)說(shuō)明
SortTOCByNamespace在 NDoc 1.3 中,各命名空間對(duì)應(yīng)的目錄結(jié)點(diǎn)總是按字母排序。
SplitTOCs在老的 MSDN 文檔引擎中,此配置項(xiàng)用于克服一些限制。新版本中繞開(kāi)了它。
DefaultTOCCHM 目錄中第一個(gè)命名空間結(jié)點(diǎn)總是被默認(rèn)被選中。
LinkToSdkDocVersion此配置項(xiàng)現(xiàn)在區(qū)分為 SdkDocVersion 和 SdkDocLanguage,且提升為所有文檔引擎的通用配置項(xiàng)。
NDoc 1.3 仍然會(huì)嘗試解析此配置,如果您重新保存,NDoc GUI 會(huì)用新的配置項(xiàng)改寫(xiě)。

改進(jìn)的超鏈接邏輯
 <see> 將形成一個(gè)指向另一個(gè)類(lèi)型/成員的文檔的鏈接。在 NDoc 1.3 中,如果一個(gè) HTML 頁(yè)中出現(xiàn)了多個(gè)指向同一個(gè)類(lèi)型/成員的文檔的 <see>,則只轉(zhuǎn)換第一個(gè)為超鏈接,其余的不表示為超鏈接、只顯示為粗體。這將使頁(yè)面不至于太雜亂。

HTML Help 1 目錄樹(shù)中的圖標(biāo)
 目錄樹(shù)中,不再出現(xiàn)問(wèn)號(hào)(?)圖標(biāo)。如果沒(méi)有指定,顯示為空白頁(yè)圖標(biāo)。

運(yùn)算符和類(lèi)型轉(zhuǎn)換
 NDoc 1.3 修復(fù)了對(duì)運(yùn)算符和類(lèi)型轉(zhuǎn)換的處理 bug,頁(yè)面格式也更接近 .NET Framework SDK 類(lèi)庫(kù)文檔。

特別的屬性
 ObsoleteAttribute
 MSDN, MSDN 2003, VS.NET 2003 文檔引擎,將自動(dòng)為具有 ObsoleteAttribute 屬性的類(lèi)型/成員添加紅色的提示文本。

  • 在命名空間列表及類(lèi)型的成員列表中,將為它們顯示紅色的“已過(guò)時(shí)。”
  • 在類(lèi)型概述頁(yè)/成員頁(yè)中,將為它們添加紅色的“注意:此成員現(xiàn)已過(guò)時(shí)。”

FlagsAttribute
 如果枚舉具有 FlagsAttribute 屬性,MSDN, MSDN 2003, VS.NET 2003 文檔引擎將自動(dòng)為它們添加如下的文本:

“此枚舉具有允許按位組合其成員值的 FlagsAttribute 屬性。”

NDoc 1.3 的已知問(wèn)題和限制

事項(xiàng)說(shuō)明
特別長(zhǎng)的類(lèi)型名稱(chēng)
NDoc 為每一個(gè)主題自動(dòng)在硬盤(pán)上創(chuàng)建一個(gè) HTML 文件。目前,文件名是根據(jù)完全限定名生成的。如果某類(lèi)型/成員的完全限定名 (命名空間 + 類(lèi)型 + 成員名) 的總字符數(shù)超過(guò) _MAX_FNAME (256 字符),NDoc 將無(wú)法創(chuàng)建這樣的文件,因?yàn)椴僮飨到y(tǒng)不支持如此多字符的文件名。另外,文件所在完整路徑的字符也不能超過(guò) _MAX_PATH (260 字符)。

如果完全限定名的字符數(shù)在 200 字符左右,那么您可能需要將 OutputDirectory 配置為一個(gè)靠近根目錄的位置,這樣可以避免文件的完整路徑超出 260 字符。

但還沒(méi)有關(guān)于文件名超出 256 字符的解決方法。

在未來(lái)某版本的 NDoc 中,我們會(huì)嘗試解決此問(wèn)題。

大小寫(xiě)敏感問(wèn)題
文件名不是大小寫(xiě)敏感的,因此當(dāng) MSDN 文檔引擎或者 JavaDoc 文檔引擎創(chuàng)建 HTML 文件時(shí),如果某些類(lèi)型或成員只是在大小寫(xiě)上不一樣,就會(huì)出現(xiàn)問(wèn)題。

請(qǐng)嘗試避免出現(xiàn)這種情況。(例如:公共屬性為 Thing,私有字段為 _thing, 避免出現(xiàn)Thing 和 thing 并行。當(dāng)然,如果不輸出私有字段,并行也沒(méi)有問(wèn)題。只是說(shuō)準(zhǔn)備輸出的類(lèi)型/成員不要出現(xiàn)這種情況。)

在未來(lái)某版本的 NDoc 中,我們會(huì)嘗試解決此問(wèn)題。

StrongNameIdentityPermissionAttribute
標(biāo)記有 StrongNameIdentityPermissionAttribute 屬性的程序集,需要有特殊的密鑰才能被讀取。NDoc 嘗試為這樣的程序集生成代碼文檔時(shí),會(huì)拋出異常。
您可以考慮使用“條件編譯”(#if...)方式為 NDoc 準(zhǔn)備沒(méi)有添加該屬性的編譯版本。
Compact Framework 不兼容為 .NET Compact Framework 編譯的程序集,當(dāng)添加到 NDoc 項(xiàng)目中時(shí),NDoc GUI 程序可能拋出異常。尤其是當(dāng)該程序集引用了 Microsoft.WindowsCE.Forms 或 SqlServerCe 時(shí),更是如此。

還沒(méi)有找到此問(wèn)題的解決方法。

在未來(lái)某版本的 NDoc 中,我們會(huì)嘗試解決此問(wèn)題。

本地化NDoc 當(dāng)前不支持本地化的文檔格式及 GUI 文本
在未來(lái)某版本的 NDoc 中,我們 *可能* 會(huì)嘗試解決此問(wèn)題。

開(kāi)始之前,您需要準(zhǔn)備以下工具,它們可以從網(wǎng)絡(luò)中獲得。

HTML Help 1 編譯器
 HTML Help 1 文件,也就是 CHM 文件,是很常見(jiàn)的應(yīng)用程序幫助文件格式,在 Visual Studio .NET 發(fā)布之前,MSDN 一直采用的就是 HTML Help 1 格式。

如果您準(zhǔn)備創(chuàng)建 HTML Help 1 (*.CHM)文件,請(qǐng)確認(rèn)您已經(jīng)安裝好 Microsoft's HTML Help Workshop。此下載安裝包已包含必需的 HTML Help 1 編譯器。

Microsoft Help 2 編譯器
 Microsoft Help 2 是 Microsoft 從 Visual Studio .NET 2002 開(kāi)始使用的、一種新的幫助文檔格式。

如果您準(zhǔn)備創(chuàng)建 Microsoft Help 2 (*.HxS)文件,請(qǐng)下載并安裝 Visual Studio Help Integration Kit (VSHIK)。此工具包已包含所必需的 Microsoft Help 2 編譯器。

Latex 編譯器
 如果您準(zhǔn)備使用 LaTeX 文檔引擎創(chuàng)建 dvi 或 pdf 文件,您需要下載并安裝一個(gè) LaTeX 系統(tǒng),比如免費(fèi)的 MikTeX。

其他工具
 H2Reg
 向客戶(hù)機(jī)部署 Microsoft Help 2 幫助文檔,不像 HTML Help 1 那樣簡(jiǎn)單(僅復(fù)制即可完成)。VSHIK 工具包介紹了 如何向客戶(hù)機(jī)部署 Microsoft Help 2 幫助文檔的詳細(xì)步驟和指導(dǎo)。

另外一種方案是采用共享軟件 H2Reg utility (開(kāi)發(fā)商: helpware.net)。

H2Reg 許可您將它包含進(jìn)部署安裝包中,它可以用來(lái)注冊(cè) Microsoft Help 2 命名空間和幫助標(biāo)題等。H2Reg 使用 INI 文件描述要部署的幫助文檔結(jié)構(gòu)。NDoc 創(chuàng)建符合 H2Reg 需要的 INI 文件,指示它進(jìn)行命名空間的注冊(cè)工作。

首先,您應(yīng)該確認(rèn),您已經(jīng)打開(kāi)了 C# 項(xiàng)目的 /doc 開(kāi)關(guān),當(dāng) Visual Studio .NET 編譯時(shí),每次都會(huì)生成相應(yīng)的 XML 文檔。

如果沒(méi)有特殊情況,請(qǐng)讓項(xiàng)目輸出的程序集名稱(chēng)和 XML 文檔文件名、僅僅擴(kuò)展名不同(比如程序集是 NDoc.Test.dll/NDoc.Test.exe,XML 文檔是 NDoc.Test.xml)。在 NDoc 中,當(dāng)您加入某程序集時(shí),NDoc 會(huì)自動(dòng)查找這樣的“同名” XML 文件。如果找到,就會(huì)嘗試自動(dòng)將它當(dāng)作該程序集的 XML 文檔。這樣會(huì)簡(jiǎn)化您的操作。

打開(kāi)項(xiàng)目的“屬性”對(duì)話(huà)框,

找到程序集名稱(chēng)

設(shè)置 XML 文檔文件為程序集名稱(chēng)(擴(kuò)展名改為 xml)。別忘了設(shè)置此項(xiàng)之前,選擇“所有配置”,讓 Debug 或 Release 配置下,都自動(dòng)生成 XML 文檔。

設(shè)置 XML 文檔文件配置

現(xiàn)在,每次使用 VS.NET 編譯您的程序集,都會(huì)自動(dòng)從源代碼中提取所有的 XML 注釋,生成 XML 文檔文件。

如果您使用的不是 Visual Studio .NET,您同樣應(yīng)該嘗試打開(kāi) C# 編譯器的 /doc 選項(xiàng)。

 The more, the better
 您在代碼中書(shū)寫(xiě)的 XML 注釋越多,最終生成的代碼文檔越專(zhuān)業(yè)。程序集的使用者越能從中獲得幫助。

一般而言的最低要求,對(duì)于每一個(gè)公共類(lèi)型,應(yīng)該給它的所有公共的和受保護(hù)的成員添加 <summary> 注釋,以描述該成員表示什么意義或者會(huì)做些什么動(dòng)作。

在 VS.NET 中,C# 代碼編輯器,提供了一些自動(dòng)完成的功能,幫助我們創(chuàng)建基本的 XML 注釋。

比如如下的代碼:

public class MyClass() {
public MyClass( string s ) { }
}

把光標(biāo)移動(dòng)到 MyClass 構(gòu)造函數(shù)的上面一空行,敲 '/' 鍵三次,VS.NET 自動(dòng)創(chuàng)建一個(gè) summary XML 文檔塊:

public class MyClass() {
/// <summary>
///
/// </summary>
/// <param name="s"></param>
public MyClass( string s ) { }
}

這種操作對(duì)于所有可以書(shū)寫(xiě) XML 注釋文檔的成員都有效。另外,在以 '///' 開(kāi)頭的 XML 注釋行中,敲入 '<' 字符,VS.NET 自動(dòng)感知功能將自動(dòng)顯示可用的 XML 注釋標(biāo)記列表。不過(guò),這個(gè)列表不包括 NDoc 所支持的額外的標(biāo)記,這些額外的標(biāo)記,您需要手工敲入。

NDoc 可以配置為輸出所有的成員,包括私有的和內(nèi)部的成員,雖然這些成員無(wú)法在程序集外部被調(diào)用,但如果您需要,您可以同樣為這些成員添加 XML 注釋,NDoc 會(huì)幫您生成這樣的適合內(nèi)部使用的代碼文檔。

NDoc 內(nèi)置的 MSDN, MSDN 2003, VS.NET 文檔引擎,支持 C# 程序員參考中的所有 XML 文檔注釋標(biāo)記。

NDoc 支持?jǐn)U充的標(biāo)記和語(yǔ)法。某些標(biāo)記只能用于特定的類(lèi)型(類(lèi),結(jié)構(gòu),委托,接口,枚舉)或成員(字段,屬性,方法,事件等),請(qǐng)參見(jiàn)標(biāo)記用法。

NDoc 將標(biāo)記區(qū)分為三類(lèi): Section 標(biāo)記,Block 標(biāo)記,Inline 標(biāo)記。

Section 標(biāo)記
 Section 標(biāo)記用于定義不同的代碼文檔的區(qū)域。它們都是頂級(jí)標(biāo)記,Block 標(biāo)記、Inline 標(biāo)記都應(yīng)包含在某個(gè) Section 標(biāo)記的內(nèi)部。(除非自定義了擴(kuò)展 XSLT 轉(zhuǎn)換,否則,在 Section 標(biāo)記外部的 Block 標(biāo)記或 Inline 標(biāo)記都被忽略。)

標(biāo)記說(shuō)明
<event> [NDoc 擴(kuò)充]
對(duì)某個(gè)成員可能引發(fā)的事件的說(shuō)明。
<example>
“示例”,幫助類(lèi)庫(kù)使用者理解類(lèi)型/成員使用方法的示例代碼。
<exception>
對(duì)某個(gè)成員可以?huà)伋龅漠惓5恼f(shuō)明。
<exclude/>

[NDoc 擴(kuò)充]

指示 NDoc 文檔引擎將被標(biāo)記的類(lèi)型/成員排除在代碼文檔之外。
與文檔引擎的“可見(jiàn)性”配置不符的,以 exclude 優(yōu)先。
<include>
將代碼文件外部的某 XML 文件中的一部分包含進(jìn)代碼文件來(lái)。
<overloads>

[NDoc 擴(kuò)充]

為“重載列表”頁(yè)面準(zhǔn)備摘要、備注、示例等文檔內(nèi)容。只需在重載成員的第一個(gè)成員前面書(shū)寫(xiě)此區(qū)域即可。

<overloads> 標(biāo)記有兩種形式:

  • 簡(jiǎn)單的形式,直接在 overload 中寫(xiě)文本,這些文本被處理為“重載列表”頁(yè)面的摘要。沒(méi)有備注、示例等區(qū)域。
  • 復(fù)雜的形式,在 overload 內(nèi)部,包含 summary, remarks, example 等標(biāo)記分別表示“重載列表”頁(yè)面的摘要、備注、示例等。
    示例:

///<overloads>This method has two overloads.</overloads>
///<summary>This overload just says hello.</summary>
public void SayHello() { ... }
///<summary>This one says hello to someone.</summary>
public void SayHello(string toSomeone) { ... }

<param>
成員的參數(shù)說(shuō)明。
<param>
訪(fǎng)問(wèn)某成員所必需的 .NET Framework 安全性 CodeAccessPermission。
<preliminary>

[NDoc 擴(kuò)充]

將某類(lèi)型/成員標(biāo)記為“預(yù)發(fā)布”。內(nèi)部的文本被當(dāng)作警告文本用紅色顯示,可以包含 <para> 表示多行文本。如果缺少內(nèi)部文本,則顯示默認(rèn)的警告文本: “[此文檔為預(yù)發(fā)布版本,在未來(lái)版本中有可能改變。]”。

如果需要把全部類(lèi)型/成員都標(biāo)記為“預(yù)發(fā)布”,請(qǐng)使用文檔引擎的 Preliminary

<remarks>
“備注”,對(duì) <summary> 的進(jìn)一步注解。
<returns>
“返回值”。
<seealso>
向頁(yè)面的“請(qǐng)參見(jiàn)”區(qū)域添加一個(gè)鏈接。

請(qǐng)不要將此標(biāo)記包含在 <remarks> 內(nèi)部,它是一個(gè)頂級(jí)標(biāo)記。

兩種可選的語(yǔ)法:

  • <seealso href="http://www.microsoft.com/china/msdn/">MSDN(CHS)</seealso>
  • <seealso cref="System.Data.DataSet">DataSet</seealso>
<summary>
“摘要”,對(duì)類(lèi)型/成員的摘要說(shuō)明。
<threadsafety>

[NDoc 擴(kuò)充]

“線(xiàn)程安全”,說(shuō)明類(lèi)型在多線(xiàn)程環(huán)境中是否安全。

NDoc 提供 static 和 instance 兩個(gè)布爾的屬性,可以自動(dòng)生成像 .NET Framework SDK 類(lèi)庫(kù)文檔中那樣的標(biāo)準(zhǔn)文本。

threadsafety 標(biāo)記內(nèi)部可以包含額外的文本,會(huì)被顯示到標(biāo)準(zhǔn)文本的下方,說(shuō)明額外的信息。例如:

/// <summary>The summary description for SafeClass.</summary>
/// <threadsafety static="true" instance="true">
/// <para>More information about using this class across thread</para>
/// </threadsafety>
public class SafeClass() { ... }

<value>
“屬性值”。

Block 標(biāo)記
 Block 標(biāo)記用于 Section 標(biāo)記的內(nèi)部,它們將顯示在單獨(dú)的行中。

標(biāo)記說(shuō)明
<code>
多行的代碼塊。
<list>
一個(gè)列表或表格。
<note>

[NDoc 擴(kuò)充]

“注意”塊。

例如:

/// <summary>
/// <note>This is a note in the summary.</note>
/// </summary>
public class SomeClass() { ... }
將生成:

注意 This is a note in the summary.

<para>
表示一個(gè)段落。

Inline 標(biāo)記
Inline 標(biāo)記可以用于其他 Section 標(biāo)記或 Block 標(biāo)記內(nèi)部,它們將和前后的文本顯示在同一行中。

標(biāo)記說(shuō)明
<c>
將內(nèi)部文本格式化為代碼樣式,用于表示行文中提到的短小代碼片段。
<paramref>
加入指向方法參數(shù)的鏈接。
<see>
加入指向某個(gè)類(lèi)型/成員或網(wǎng)絡(luò) URL 的鏈接。

兩種可選的語(yǔ)法:

  • <see href="http://www.microsoft.com/china/msdn/">MSDN(CHS)</see>
  • <see cref="System.Data.DataSet">DataSet</see>
  • <see langword="xxx"/>
    其中 xxx 可以是 null, sealed, static, abstract 或 virtual。

NDoc 中的 MSDN 文檔引擎和 VS.NET 文檔引擎使用了一些 屬性 來(lái)控制代碼文檔中一些特殊樣式。

如果類(lèi)型或成員具有以下屬性,NDoc 將顯示相應(yīng)的特殊樣式,使文檔看起來(lái)更加專(zhuān)業(yè)。

屬性說(shuō)明
ObsoleteAttribute
標(biāo)記該類(lèi)型或成員為“已過(guò)時(shí)。”
FlagsAttribute
指示可以將枚舉作為位域(即一組標(biāo)志)處理,允許按位組合其成員值。
NDoc 將仿照 .NET Framework SDK 文檔中處理方式:
  • 在該枚舉摘要下面顯示“此枚舉具有允許按位組合其成員值的 FlagsAttribute 屬性。”
  • 在枚舉成員的列表中添加“值”列,顯示每個(gè)枚舉成員對(duì)應(yīng)的枚舉值。
EditorBrowsableAttribute
使用此屬性(attribute)的成員將不顯示在 VS.NET 的屬性窗口、對(duì)象瀏覽器及智能感知等列表中,根據(jù) NDoc 項(xiàng)目配置中的 EditorBrowsableFilter 配置,NDoc 可以將這部分被隱藏的成員排除在代碼文檔之外。
注:在 NDoc 1.3 中,我們推薦您使用 <exclude/> XML 文檔標(biāo)記在代碼文檔中隱藏某些類(lèi)型或成員。
AssemblyVersionAttribute
根據(jù) NDoc 項(xiàng)目配置中的 AssemblyVersionInfo 配置,NDoc 可以在代碼文檔中包含通過(guò) AssemblyVersionAttribute 屬性指定的程序集版本信息。

新建 NDoc 項(xiàng)目和添加程序集
 如果您使用 Visual Studio.NET 開(kāi)發(fā)工具,那么最簡(jiǎn)單的方法就是點(diǎn)擊工具條中的“從 Visual Studio .NET 解決方案新建 NDoc 項(xiàng)目...”按鈕。


 然后,NDoc 會(huì)要求您選擇某種編譯配置(如 Debug 或 Release,或者其他您自定義的編譯配置),這取決于您將使用哪種編譯配置下生成的程序集和 XML 文檔。


 編譯配置選擇對(duì)話(huà)框

“確定”之后,NDoc 項(xiàng)目設(shè)計(jì)器將自動(dòng)生成一個(gè)新的 NDoc 項(xiàng)目,其中已包含解決方案中各個(gè)項(xiàng)目生成的程序集和相應(yīng)的 XML 文檔。

如果您沒(méi)有使用 Visual Studio .NET,則需要手工向 NDoc 項(xiàng)目添加要生成代碼文檔的程序集和相應(yīng)的 XML 文檔。您可以通過(guò)點(diǎn)擊設(shè)計(jì)器重的“添加”按鈕、從文件系統(tǒng)中瀏覽并選擇要添加的程序集,也可以直接從 Windows 資源管理器或“我的電腦”中、直接拖動(dòng)要生成代碼文檔的程序集、到設(shè)計(jì)器中的程序集列表框中。

請(qǐng)確保您打開(kāi)了 /doc 文檔輸出的選項(xiàng),否則 NDoc 輸出的代碼文檔只能有很少的內(nèi)容。

選擇文檔引擎
 NDoc 內(nèi)置了若干文檔引擎,它們可以用于生成不同風(fēng)格、樣式、格式的代碼文檔。每種文檔引擎都定義了它自己的排版、格式,以及要輸出的內(nèi)容。

最受歡迎的兩種文檔引擎是 MSDN 和 VS.NET 2003。它們都生成類(lèi)似 .NET Framework SDK 類(lèi)庫(kù)文檔樣式的代碼文檔,不同的是前者最終編譯成 HTML Help 1 (即 *.CHM)格式的整合文件,后者最終編譯成 Microsoft Help 2 (即以形如 ms-help://... 的 URI 地址訪(fǎng)問(wèn)的文檔)格式的形式。

NDoc 1.3 中,新增了 MSDN 2003 文檔引擎,在保留 MSDN 文檔引擎的特點(diǎn)之外,向接近 .NET Framework SDK 類(lèi)庫(kù)文檔的方向又前進(jìn)了一大步:加入了語(yǔ)言選擇器等特色功能。

NDoc 文檔引擎

所有的文檔引擎都共享一些配置項(xiàng),比如要輸出哪些類(lèi)型/不輸出哪些類(lèi)型等;每種文檔引擎都會(huì)有一些額外的配置項(xiàng),用于特定的配置。

更多的細(xì)節(jié)請(qǐng)參看文檔引擎。

生成代碼文檔
 選擇好文檔引擎,并做好相應(yīng)的配置。您就可以點(diǎn)擊“生成”按鈕讓 NDoc 創(chuàng)建您需要的代碼文檔了。設(shè)計(jì)器下方的“輸出”窗口中將顯示文檔制作中的消息,狀態(tài)條上的進(jìn)度條指示生成的整體進(jìn)度。

NDoc 生成進(jìn)度

查看文檔
 生成成功后,您可以點(diǎn)擊“查看文檔”按鈕查看生成的代碼文檔。

概述
 NDoc 項(xiàng)目文件保存了您要輸出代碼文檔的程序集、相應(yīng)的 XML 文檔、選用的文檔引擎及配置參數(shù)等信息。

NDoc 項(xiàng)目設(shè)計(jì)器

新建 NDoc 項(xiàng)目的工作可以很簡(jiǎn)單:選擇要輸出代碼文檔的程序集、相應(yīng)的 XML 文檔、選擇一個(gè)文檔引擎并做好配置參數(shù)。

命名空間摘要
 標(biāo)準(zhǔn)的 C# 注釋 XML 文檔中,沒(méi)有提供任何標(biāo)記為命名空間提供“summary”文檔。NDoc 提供了兩種途徑允許您為命名空間提供“summary”文檔。一種是通過(guò)在您的代碼加入特定的類(lèi),并對(duì) NDoc 文檔引擎作相應(yīng)配置(請(qǐng)參見(jiàn) NDoc 文檔引擎 中關(guān)于 UseNamespaceDocSummaries 配置項(xiàng)的說(shuō)明)。另一種途徑是通過(guò)項(xiàng)目設(shè)計(jì)器指定各命名空間的摘要文檔。

在項(xiàng)目設(shè)計(jì)器中,單擊“命名空間摘要”按鈕,在彈出的“編輯命名空間摘要”對(duì)話(huà)框中,給每個(gè)命名空間填寫(xiě)摘要文檔。

這些摘要文檔將包含在最終生成的代碼文檔中。

編輯命名空間摘要對(duì)話(huà)框

文檔引擎配置
各種文檔引擎間共享一些基本配置項(xiàng),比如輸出過(guò)濾(是否輸出 private 成員等),缺少文檔時(shí)的處理對(duì)策等;各文檔引擎又包含自己的某些特殊配置項(xiàng)。這些配置項(xiàng)都可以通過(guò)項(xiàng)目設(shè)計(jì)器查看、更改,并保存到項(xiàng)目文件中。

設(shè)計(jì)器中配置項(xiàng)以類(lèi)別排列,并且,選中某一配置項(xiàng)時(shí)會(huì)顯示一小段提示文本,說(shuō)明該配置項(xiàng)的用途和用法。這些都將幫助您快速掌握這些文檔引擎的使用方法。

關(guān)于完整的文檔引擎列表,及其配置項(xiàng),請(qǐng)參見(jiàn) NDoc 文檔引擎。

選項(xiàng)

選項(xiàng)說(shuō)明
ShowProgressOnBuild如果為真,在文檔生成動(dòng)作啟動(dòng)時(shí),消息輸出窗口將自動(dòng)顯示出來(lái)。
LoadLastProjectOnStartup如果為真,每次啟動(dòng) NDoc 時(shí)將自動(dòng)加載最后一次打開(kāi)的項(xiàng)目文件。此配置和登陸的 Windows 用戶(hù)相關(guān)。
MRUSize“最近的項(xiàng)目”列表中顯示的最大條目數(shù)。
HtmlHelpWorkshopLocationHTML Help Workshop 軟件安裝路徑,即 HHC.exe 編譯器的所在目錄。僅對(duì) MSDN 和 MSDN 2003 文檔引擎有效。

默認(rèn)情況下,MSDN 和 MSDN 2003 文檔引擎會(huì)嘗試查找 HTML Help 1 編譯器的所在位置,但仍會(huì)出現(xiàn)無(wú)法定位的情況。這時(shí),NDoc 會(huì)提示您無(wú)法找到 HHC.exe 編譯器,您需要設(shè)置此配置項(xiàng)解決問(wèn)題。

此配置為機(jī)器級(jí)別的配置,在此機(jī)器上的任何 Windows 用戶(hù)都共享此配置。

概述
 NDoc 不僅提供了 GUI 的界面,也同時(shí)提供了命令行工具(NDocConsole.exe),為和其他開(kāi)發(fā)工具集成提供了方便。
 
 語(yǔ)法

 NDoc 命令行使用簡(jiǎn)單的“name-value 對(duì)”語(yǔ)法來(lái)指定相應(yīng)的配置項(xiàng)。每個(gè)選項(xiàng)前用一個(gè)短線(xiàn),如:-name=value,短線(xiàn)和等號(hào)周?chē)灰锌崭瘛O旅嬲Z(yǔ)法敘述中,中括號(hào)的部分是可選的。路徑中如果包含有空格,則需要用引號(hào)(")括起來(lái)。
 用法 1

NDocConsole 程序集[,XML文檔] [程序集[,XML文檔]]...
[[-referencepath=文件夾] [-referencepath=文件夾]...]
[-namespacesummaries=文件名]
[-documenter=文檔引擎]
[[-引擎參數(shù)=值] [-引擎參數(shù)=值]...]
[-verbose]

?

注釋:

  • 程序集: 要生成文檔的完整路徑。
  • XML文檔: 對(duì)應(yīng)的 XML 文檔(C# 編譯器 /doc 輸出的 XML 文檔)。
    缺省時(shí),將自動(dòng)查找和程序集相同路徑、相同名稱(chēng),僅擴(kuò)展名不同(.xml)的 XML 文件代替。
  • referencepath: 引用的第三方 dll 的搜索路徑。
  • namespacesummaries: 要使用的 命名空間摘要 XML 文檔 的完整路徑。
  • documenter: 要使用的文檔引擎的名稱(chēng)。注意此項(xiàng)區(qū)分大小寫(xiě)。
    缺省時(shí),將使用 MSDN 文檔引擎。
  • 引擎參數(shù): 文檔引擎的配置參數(shù)名稱(chēng),注意此項(xiàng)區(qū)分大小寫(xiě)。
  • 值: 給引擎參數(shù)設(shè)置的值。
  • verbose: 顯示文檔生成進(jìn)度的輸出消息。

用法 2

NDocConsole -recurse=文件夾[,最大讀取深度]
[[-referencepath=文件夾] [-referencepath=文件夾]...]
[-namespacesummaries=文件名]
[-documenter=文檔引擎]
[[-引擎參數(shù)=值] [-引擎參數(shù)=值]...]
[-verbose]

注釋:

  • recurse: 您可以將要生成文檔的程序集和它們對(duì)應(yīng)的 XML 文檔放在同一文件夾中(注意:XML 文檔的文件名應(yīng)和對(duì)應(yīng)的程序集文件名相同,僅擴(kuò)展名不同),將此文件夾指定給此參數(shù),NDoc 將自動(dòng)查找程序集和 XML 文檔。這是一種比較簡(jiǎn)單的用法。
  • 最大讀取深度: 在 recurse 參數(shù)指定的文件夾中的讀取深度。
  • referencepath: 引用的第三方 dll 的搜索路徑。
  • namespacesummaries要使用的 命名空間摘要 XML 文檔 的完整路徑。
  • documenter: 要使用的文檔引擎的名稱(chēng)。注意此項(xiàng)區(qū)分大小寫(xiě)。
    缺省時(shí),將使用 MSDN 文檔引擎。
  • 引擎參數(shù): 文檔引擎的配置參數(shù)名稱(chēng),注意此項(xiàng)區(qū)分大小寫(xiě)。
  • 值: 給引擎參數(shù)設(shè)置的值。
  • verbose: 顯示文檔生成進(jìn)度的輸出消息。

用法 3
 NDocConsole [-documenter=文檔引擎] -project=NDOC項(xiàng)目文件 [-verbose]
 
 注釋:

  • documenter: 要使用的文檔引擎的名稱(chēng)。注意此項(xiàng)區(qū)分大小寫(xiě)。
    缺省時(shí),將使用 MSDN 文檔引擎。
  • project: 您可以使用 NDoc GUI 界面保存一個(gè) NDoc 項(xiàng)目文件,然后設(shè)置給此參數(shù)。
  • verbose: 顯示文檔生成進(jìn)度的輸出消息。

用法 4
 NDocConsole [-help] [文檔引擎 [引擎參數(shù)]]
 
 where:

  • help: 顯示命令行幫助信息。
    如果文檔引擎參數(shù)沒(méi)有指定,顯示 NDoc 命令行的基本語(yǔ)法。
  • 文檔引擎: 顯示此文檔引擎的幫助信息(如:可用的配置參數(shù)項(xiàng)等)。注意此項(xiàng)區(qū)分大小寫(xiě)。
    如果引擎參數(shù)沒(méi)有指定,顯示此文檔引擎可用的配置參數(shù)列表。
  • 引擎參數(shù): 顯示文檔引擎的某配置參數(shù)的信息,如描述、默認(rèn)值。若參數(shù)為枚舉類(lèi)型,還會(huì)列出可用的枚舉值(使用時(shí)注意區(qū)分大小寫(xiě))。

可用的文檔引擎
 NDoc 1.3 自帶的文檔引擎包括: JavaDoc, LaTeX, LinearHtml, MSDN, MSDN_2003, VS.NET_2003, 以及 XML。

您可以使用 NDocConsole -help 看到實(shí)際的列表。

命名空間摘要 XML 文檔的語(yǔ)法

<namespaces>
<namespace name="My.NameSpace">My summary.</namespace>
<namespace name="My.OtherNameSpace">My other summary.</namespace>
...
</namespaces>

配置 NAnt(暫無(wú))

配置 VS.NET
 您可以利用 VS.NET 中提供的生成事件功能,將 NDoc 配置為在每次代碼編譯完成后、自動(dòng)生成相應(yīng)的代碼文檔。同時(shí) NDoc 代碼文檔生成將花費(fèi)不少時(shí)間,因此建議您只在 Release 配置狀態(tài)(或其他自定義的配置狀態(tài))時(shí)允許自動(dòng)文檔生成。

而 C# 項(xiàng)目的生成事件并不區(qū)分各種配置狀態(tài)(如 Debug 或 Release ),因此需要在生成事件的腳本中添加對(duì)配置狀態(tài)(VS.NET 內(nèi)置的編譯變量)的判斷,如:

if $(ConfigurationName) == Release
 因?yàn)橹苯釉谏墒录翱谥姓_書(shū)寫(xiě) NDoc 命令行命令及相關(guān)參數(shù)、很困難也很容易出現(xiàn)錯(cuò)誤,因此您可以將命令寫(xiě)在一個(gè)批處理 .bat 文件中,而在項(xiàng)目的生成后事件中引用這個(gè)批處理文件(如下圖),這樣比較容易書(shū)寫(xiě)和維護(hù)。

Calling a batch file from the post-build event

一個(gè)解決方案中有多個(gè)項(xiàng)目時(shí),如果您要得到一份整合的代碼文檔,您可以只在編譯順序中最后的那個(gè)項(xiàng)目配置中,填寫(xiě)這個(gè)生成后事件命令。如果您想為每個(gè)項(xiàng)目單獨(dú)生成一份文檔,則需要分別去配置。您可以根據(jù)您的實(shí)際情況決定。

關(guān)于 NDoc.bat 中的寫(xiě)法,您可以參考下面的命名行(它對(duì)應(yīng)于上面圖中的生成后事件命令):

IF NOT %1 == Release GOTO end

"%ProgramFiles%\NDoc 1.3\bin\net\1.1\NDocConsole.exe" -recurse="%2bin\%1"

:end
 復(fù)雜的解決方案中,可能需要更加復(fù)雜的配置,比如有時(shí)配置第三方 dll 的搜索路徑等,仔細(xì)研究一下 NDocConsole.exe -help 的幫助信息吧!

其他開(kāi)發(fā)工具的配置
 大多數(shù)開(kāi)發(fā)工具都有運(yùn)行命令行程序的選項(xiàng),這些開(kāi)發(fā)工具都可以使用 NDoc 命令行來(lái)實(shí)現(xiàn)代碼文檔的自動(dòng)生成。每種開(kāi)發(fā)工具的配置方法可能不同,但思路都很類(lèi)似上面關(guān)于 VS.NET 中的想法。

概述
 文檔引擎是生成各種格式代碼文檔的組件。NDoc 1.3 內(nèi)建了以下文檔引擎:

  • VS.NET
  • MSDN
  • MSDN 2003
  • XML
  • JavaDoc
  • LinearHtml
  • LaTeX
    NDoc 的設(shè)計(jì)具有很強(qiáng)的可擴(kuò)展性,您可以自己創(chuàng)作輸出特定格式文檔的、新的文檔引擎。

代碼文檔的制作一般分作兩大環(huán)節(jié):

  • 將從程序集中通過(guò)反射發(fā)出讀取的類(lèi)型/成員信息,和 /doc XML 文檔中的注釋文檔,合并在一起,即 NDoc 中間 XML 數(shù)據(jù)文件。
  • 通過(guò) XSLT 轉(zhuǎn)換將 NDoc 中間 XML 數(shù)據(jù)文件轉(zhuǎn)換為目標(biāo) HTML 格式。
    您可以通過(guò) XML 文檔引擎得到 NDoc 中間 XML 數(shù)據(jù)文件,經(jīng)過(guò)分析和轉(zhuǎn)換,創(chuàng)作您自己的文檔引擎。
  • 下面配置項(xiàng),是 NDoc 所有文檔引擎中通用的配置項(xiàng),各文檔引擎還可以有自己的一些特殊配置,詳見(jiàn)文檔引擎的文檔。

    通用的配置

    配置項(xiàng) 說(shuō)明
    (全局)
    ReferencePaths一組額外的程序集搜索路徑。
    注意:這是一個(gè) NDoc 項(xiàng)目級(jí)別的屬性,各文檔引擎共享此項(xiàng)配置。
    文檔主要配置
    AssemblyVersionInfo如何輸出版本信息。
    可選項(xiàng)為:
    None
    不輸出版本信息。(默認(rèn)選項(xiàng))
    AssemblyVersion 輸出標(biāo)準(zhǔn) .NET 的版本號(hào),即通過(guò) AssemblyVersionAttribute 屬性設(shè)置的版本號(hào)。
    AssemblyFileVersion 通過(guò) AssemblyFileVersionAttribute 屬性指定的版本號(hào)。如果程序集需要安裝到 GAC,通過(guò)這種方式指定程序集的版本比較常見(jiàn)。
    AutoDocumentConstructors若此項(xiàng)為真,文檔引擎將為類(lèi)型的默認(rèn)構(gòu)造函數(shù)(即不附帶參數(shù)的那個(gè)構(gòu)造函數(shù))添加默認(rèn)的 summary 文檔。
    AutoPropertyBackerSummaries若此項(xiàng)為真,文檔引擎會(huì)把字段 _Length 或 length 視為屬性 'Length' 的輔助字段,在 _Length 或 length 缺少文檔信息時(shí),自動(dòng)為它添加 summary 信息(“屬性 Length 的輔助字段。”)。
    CleanIntermediates是否在文檔成功生成后,刪除中間文件。
    比如 MSDN 和 VS.NET 文檔引擎會(huì)編譯為單一文件,它們的中間文件包括所有編譯前的網(wǎng)頁(yè)、HTML Help 項(xiàng)目文件等。
    CopyrightHref版權(quán)聲明文本的超鏈接地址。
    CopyrightText版權(quán)聲明文本,將被輸出到代碼文檔的每個(gè)頁(yè)面中。
    FeedbackEmailAddress用戶(hù)反饋接收 Email 地址。將在輸出的代碼文檔每頁(yè)的底部添加放置指向此 Email 地址的超鏈接。
    Preliminary若此項(xiàng)為真,文檔引擎將在每個(gè)頁(yè)面中添加紅色的消息“[此文檔為預(yù)發(fā)布版本,在未來(lái)版本中有可能改變。]”。
    SdkDocLanguge指示文檔引擎應(yīng)將 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)中包含的類(lèi)型的超鏈接指向哪種本地化語(yǔ)言版本的 .NET Framework SDK。
    SdkDocVersion指示文檔引擎應(yīng)將 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)中包含的類(lèi)型的超鏈接指向哪個(gè)版本的 .NET Framework SDK。
    UseNamespaceDocSummaries若此項(xiàng)為真,文檔引擎將在每個(gè)命名空間中查找一個(gè)名為 NamespaceDoc 的類(lèi),并將它的 summary 信息作為這個(gè)命名空間的 summary,這個(gè)類(lèi)本身不會(huì)出現(xiàn)在最終的代碼文檔中。
    如果需要,您可以使用 #if ... #endif,配合條件編譯常數(shù),在最終 Release 程序集中排除 NamespaceDoc 類(lèi)。
    UseNDocXmlFile主要用于調(diào)試用途,一般情況下請(qǐng)留空白。NDoc 會(huì)首先生成中間 XML 數(shù)據(jù)文件(可以使用 XML 文檔引擎得到),然后通過(guò) XLST 轉(zhuǎn)換為各種 HTML 格式。如果希望創(chuàng)作自定義的文檔引擎,可以將此選項(xiàng)配置為事先生成的一個(gè) NDoc 中間 XML 數(shù)據(jù)文件,這樣將提高您的調(diào)試效率。
    屬性(attribute)的輸出
    DocumentAttributes 是否輸出類(lèi)型和成員的屬性(attribute)。
    DocumentedAttributes
    屬性(attribute)輸出的過(guò)濾。當(dāng) DocumentAttributes = true 時(shí),此配置指示將輸出哪些屬性,其他屬性被過(guò)濾掉。
    請(qǐng)使用編輯器生成,有效的格式應(yīng)為:

    '<attribute-name-starts-with>,<property-to-show>,<property-to-show>|<attribute-name-starts-with>,<property-to-show>,<property-to-show>|(etc...)'

    如果為空白,則輸出全部屬性。

    DocumentInheritedAttributes 是否輸出從基類(lèi)中繼承而來(lái)的屬性(attribute)。如果 DocumentAttributes = false,則此配置被忽略。
    ShowTypeIdInAttributes 是否在屬性(attribute)輸出時(shí)輸出 TypeId 值。如果 DocumentAttributes = false,則此配置被忽略。
    缺少文檔時(shí)的輸出
    ShowMissingParams 缺少 <param> 參數(shù)文檔時(shí),是否輸出紅色的提示文本。
    ShowMissingRemarks 缺少 <remarks> 備注文檔時(shí),是否輸出紅色的提示文本。
    ShowMissingReturns 缺少 <returns> 返回值文檔時(shí),是否輸出紅色的提示文本。
    ShowMissingSummaries 缺少 <summary> 概述文檔時(shí),是否輸出紅色的提示文本。
    ShowMissingValues 缺少 <values> 屬性值文檔時(shí),是否輸出紅色的提示文本。

    XLinks
     HTML Help 1 直接使用 HTML <A> 標(biāo)記表示超鏈接。Microsoft Help 2 引入了新的 XLinks 機(jī)制 (是微軟對(duì) W3C XLinks 的一個(gè)實(shí)現(xiàn)),來(lái)表示指向其他文檔集合的超鏈接。一個(gè) XLink 很像 HTML <A> 鏈接,但包含額外的元數(shù)據(jù)用于表示復(fù)雜的鏈接。Microsoft Help 2 使用 XLinks 不直接使用路徑/文件名,而根據(jù)在“索引”表中檢索特定的關(guān)鍵字查找。

    NDoc 為指向 .NET Framework 類(lèi)型/成員的鏈接(包括成員列表中指向基類(lèi)型的鏈接、以及使用 <see> 標(biāo)記加入的指向 .NET Framework 或第三方類(lèi)庫(kù)中的類(lèi)型/成員的顯式鏈接),制作 XLinks 鏈接。下面是一個(gè)指向 System.Void 的示例 XLink:

    <MSHelp:link

    keywords="frlrfSystemVoidClassTopic"

    indexMoniker="!DefaultAssociativeIndex"

    namespace="ms-help://MS.NETFrameworkSDKv1.1.CHS">void</MSHelp:link>

    上面 XLink 的三個(gè)屬性指示了查找這個(gè)幫助主題的方法。屬性 namespace 指示在哪個(gè)文檔命名空間中查找(每個(gè)幫助文檔集合都需要在機(jī)器中注冊(cè)一個(gè)唯一的命名空間,如上面的 ms-help://MS.NETFrameworkSDKv1.1.CHS 表示 .NET Framework SDK 類(lèi)庫(kù)文檔的幫助文檔集合)。屬性 indexMoniker 指示使用哪種類(lèi)型的“索引”(Microsoft Help 2 索引可以有很多類(lèi)型,其中,DefaultAssociativeIndex 常用于創(chuàng)建幫助主題之間的關(guān)聯(lián))。最后,keyword 指示要指向哪個(gè)幫助主題頁(yè)面。

    每個(gè)頁(yè)面頭部的嵌入 XML 數(shù)據(jù)島中都包含若干 Keywords,您可以在 .NET Framework SDK 類(lèi)庫(kù)文檔中查看 System.Void 頁(yè)面中,包含如下的一行:

    <MSHelp:Keyword Index="A" Term="frlrfSystemVoidMembersTopic"/>

    這個(gè) frlrfSystemVoidMembersTopic 就是在 .NET Framework SDK 類(lèi)庫(kù)文檔中,用 DefaultAssociativeIndex 類(lèi)型的“索引”中的 keyword。

    鏈接到 .NET Framework SDK 類(lèi)庫(kù)文檔
     指向到 .NET Framework SDK 類(lèi)庫(kù)文檔的超鏈接,不需要您費(fèi)心,NDoc 已經(jīng)可以做的很好。您盡管從 .NET Framework 的基類(lèi)型繼承、創(chuàng)作您的子類(lèi)型,或者使用 <see> 等標(biāo)記加入這些鏈接,NDoc 自動(dòng)處理這些關(guān)于 XLinks 的事情。

    鏈接到第三方類(lèi)庫(kù)文檔
     NDoc 允許您創(chuàng)建指向到第三方類(lèi)庫(kù)文檔的超鏈接,不過(guò)也需要嚴(yán)格按照上面介紹的 XLinks 體制來(lái)做。首先找到該文檔集合的命名空間,和要指向的幫助主題 HTML 頁(yè)頭部中的 keyword,做好準(zhǔn)備。(如果那個(gè)文檔集合也是用 NDoc 1.3 生成的,則頁(yè)面頭部的 XML 數(shù)據(jù)島已經(jīng)按要求寫(xiě)好了 keyword。)

    因?yàn)?NDoc 只能找到子類(lèi)型的父類(lèi)型的名稱(chēng),<see> 標(biāo)記中最終 NDoc 看到的也只是要指向的類(lèi)型/成員的完全名稱(chēng);NDoc 不知道這些類(lèi)型/成員的文檔存在哪個(gè)文檔集合中。您需要告訴 NDoc:哪些類(lèi)型/成員的幫助文檔在哪個(gè)文檔命名空間,而另一些類(lèi)型/成員在另一個(gè)文檔命名空間,也就是各 .NET 類(lèi)型/成員和 Microsoft Help 2 幫助文檔命名空間之間的映射關(guān)系。這就需要您指定 NamespaceMappingFile 了(請(qǐng)參見(jiàn) VS.NET 2003 文檔引擎的 UseHelpNamespaceMappingFile 配置項(xiàng))。NamespaceMappingFile 是一個(gè) XML 文件,它必須符合 NamespaceMapping XSD 架構(gòu)(請(qǐng)右擊“另存為...”)。

    <namespaceMap xmlns="urn:ndoc-sourceforge-net:documenters.NativeHtmlHelp2.schemas.namespaceMap">

    <helpNamespace ns="ms-help://companyX.sharedhelpcollection">

    <managedNamespace ns="CompanyX"/>

    </helpNamespace>

    <helpNamespace ns="ms-help://companyX.producthelpcollection">

    <managedNamespace ns="CompanyX.Product1"/>

    <managedNamespace ns="CompanyX.Product2"/>

    </helpNamespace>

    </namespaceMap>

    NamespaceMappingFile 的 一個(gè)實(shí)例:

    <?xml version="1.0" encoding="utf-8"?>
    <namespaceMap xmlns="urn:ndoc-sourceforge-net:documenters.NativeHtmlHelp2.schemas.namespaceMap">
    <helpNamespace ns="ms-help://MS.NETFrameworkSDKv1.1.CHS">
    <managedNamespace ns="System" />
    <managedNamespace ns="Microsoft" />
    </helpNamespace>
    </namespaceMap>

     上面的例子表示指向 System 和 Microsoft 命名空間的類(lèi)型/成員的鏈接,將被指向 ms-help://MS.NETFrameworkSDKv1.1.CHS 幫助文檔命名空間。

    指定了 NamespaceMappingFile 之后,其他的工作都可以交給 NDoc 來(lái)做了。

    與 Visual Studio .NET IDE 的集成

     .NET Framework SDK 類(lèi)庫(kù)文檔的每一個(gè)頁(yè)面的頭部都有一個(gè)嵌入的 XML 數(shù)據(jù)島。在 Microsoft 文檔資源管理器中,這些 XML 數(shù)據(jù)島用于創(chuàng)建索引,鏈接幫助主題,查找關(guān)鍵字,篩選幫助主題,以及很多其他功能。Visual Studio .NET IDE 中的“動(dòng)態(tài)幫助”功能也依賴(lài)于這些嵌入的 XML 數(shù)據(jù)。以下是一個(gè) XML 數(shù)據(jù)島示例:

    <xml>

    <MSHelp:TOCTitle Title="Object Class"/>

    <MSHelp:RLTitle Title="Object Class"/>

    <MSHelp:Keyword Index="K" Term="Object class, about Object class"/>

    <MSHelp:Keyword Index="A" Term="frlrfSystemObjectClassTopic"/>

    <MSHelp:Keyword Index="F" Term="System.Object"/>

    <MSHelp:Attr Name="DocSet" Value="NETFramework"/>

    <MSHelp:Attr Name="TopicType" Value="kbSyntax"/>

    <MSHelp:Attr Name="DevLang" Value="CSharp"/>

    <MSHelp:Attr Name="DevLang" Value="VB"/>

    <MSHelp:Attr Name="DevLang" Value="C++"/>

    <MSHelp:Attr Name="DevLang" Value="JScript"/>

    <MSHelp:Attr Name="DevLang" Value="VJ#"/>

    <MSHelp:Attr Name="Technology" Value="WFC"/>

    <MSHelp:Attr Name="Technology" Value="ManagedC"/>

    <MSHelp:Attr Name="TechnologyVers" Value="kbWFC"/>

    <MSHelp:Attr Name="TechnologyVers" Value="kbManagedC"/>

    <MSHelp:Attr Name="Locale" Value="kbEnglish"/>

    <MSHelp:Attr Name="DocSet" Value="NETCompactFramework"/>

    <MSHelp:Attr Name="TechnologyVers" Value="kbProfile2NETCF"/>

    <MSHelp:Attr Name="HelpPriority" Value="2"/>

    </xml>

    NDoc VS.NET 文檔引擎同樣創(chuàng)建這樣的 XML 數(shù)據(jù)島,以提高和 Microsoft 文檔資源管理器以及 VS.NET IDE 的集成性。

    要求

     盡管 NDoc 為每一幫助主題生成必要的 XML 數(shù)據(jù)島,但要更好的利用 Microsoft Help 2 的功能(如篩選器等),還需要了解更多的背景知識(shí)。

    Help Title 必須存在于一個(gè)幫助集合中。

    Microsoft Help 2 定義了兩個(gè)級(jí)別的幫助文檔容器:Help Title 和幫助集合。Help Title 是一組相關(guān)的幫助主題,編譯為一個(gè) .HxS 文件。幫助集合是一個(gè)或多個(gè) Help Title 的集合。(您可以這樣理解:一個(gè) Help Title 可以被當(dāng)作一個(gè)幫助集合,但反過(guò)來(lái)不成立。) 每個(gè)幫助集合必須分配有一個(gè)唯一的命名空間。

    只有幫助集合才能被集成到 VS.NET 的幫助系統(tǒng)中。

    幫助集合必須在每臺(tái)機(jī)器上注冊(cè)后才能被訪(fǎng)問(wèn)。

    Microsoft Help 2 幫助系統(tǒng)維護(hù)一個(gè)注冊(cè)表(不要和 Windows 注冊(cè)表混淆),保存當(dāng)前機(jī)器中所有已安裝的幫助集合。此注冊(cè)表用于定位超鏈接的目的地,執(zhí)行檢索,顯示索引等。這是 Microsoft Help 2 中一個(gè)核心的部分。

    因?yàn)檫@個(gè)原因,幫助集合必須在安裝時(shí)注冊(cè)到每臺(tái)客戶(hù)端機(jī)器中,否則將無(wú)法訪(fǎng)問(wèn)得到。

    已注冊(cè)的幫助集合可以被“plugged-in”進(jìn) VS.NET 合并文檔集合。

    Microsoft Help 2 允許幫助集合的插接。可以將您的幫助集合插接到其他已有的幫助集合中,比如 VS.NET 合并文檔集合,它的命名空間是 MS.VSCC.2003。

    還很糊涂?

     Microsoft Help 2 確實(shí)是一套復(fù)雜的技術(shù)。更深入的信息請(qǐng)查閱 VSHIK 文檔。網(wǎng)站 helpware.net 提供了很多有關(guān) Microsoft Help 2 的有用資料和教程。HelpWare 還提供了一個(gè)名為 FAR 的共享軟件,它更證明了 Microsoft Help 2 幫助系統(tǒng)的潛力。

    VS.NET 文檔引擎使用了幾個(gè)配置項(xiàng),意在簡(jiǎn)化整個(gè)過(guò)程。

    首先,您應(yīng)該設(shè)置 GenerateCollectionFiles 為 true。這將指示 NDoc 將生成的文檔合并到 VS.NET 合并文檔集合中去。

    然后,您需要指定 CollectionNamespace,幫助集合的命名空間名稱(chēng)。不要使用空格、漢字等 URI 中不允許的字符。建議您設(shè)法讓這個(gè)命名空間名稱(chēng)不容易重復(fù),比如以您的公司名開(kāi)始,等等。

    第三步,指定 PlugInNamespace。它表示要“plugged-in”到哪個(gè)文檔集合中去。當(dāng)使用 h2reg.exe 部署您的幫助文檔時(shí),它們被插接到 VS.NET 的合并文檔集合中去。默認(rèn)值 ms.vscc 指示 h2reg.exe 自動(dòng)判斷 VS.NET 是 2002 或 2003 版本。

    篩選器

     每個(gè)幫助主題的 XML 數(shù)據(jù)島中可以包含一個(gè)或多個(gè) DocSet 值。在文檔資源管理器及 VS.NET IDE 中,這些 DocSet 值常常被各個(gè)篩選器用于篩選幫助索引及搜索范圍。

    默認(rèn)的一些篩選器定義如下:

    Windows Client SDK,   Query: "DocSet"="WCSDK"
    .NET Framework,     Query: ("DocSet"="NETFramework" OR "DocSet" = "NETFrameworkExtender") OR (("DocSet"="C#" OR "DocSet"="Visual Basic" OR "DocSet"="Visual C++" OR "DocSet"="VBA" OR "DocSet"="VJ#" OR "DocSet"="Visual Studio") AND "Technology"="ManagedCode")
    Visual Studio 宏,    Query: "DocSet" = "VSM" OR "DocSet" = "NETFramework"
    Visual Basic,      Query: "DocSet" = "Visual Basic" OR "DocSet" = "NETFramework" OR "DocSet" = "NETFrameworkExtender" OR "DocSet" = "DHTML" OR "DocSet" = "XML" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "kbVBp700")
    Visual C++,       Query: "DevLang" = "C" OR "DevLang" = "C++" OR "Product" = "VC" OR "DocSet" = "PSDK" OR "DocSet" = "NETFramework" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "kbVC700")
    Platform SDK,      Query: "DocSet" = "PSDK"
    (no filter),      Query:
    企業(yè)級(jí)服務(wù)器,     Query: "DocSet" = "NETEnterpriseServers" OR "DocSet" = "SQL Server"
    Internet 開(kāi)發(fā),    Query: "DocSet" = "DHTML" OR "DocSet" = "XML" OR "DevLang" = "DHTML" OR "DevLang" = "HTML" OR "DevLang" = "VBScript" OR "DevLang" = "JScript" OR "DevLang" = "ASP" OR "Technology" = "kbSOAP" OR "Technology" = "ASPNET" OR "Technology" = "HPS"
    Visual Studio,    Query: "DocSet" = "Visual Studio" OR "DocSet" = "Visual Studio SDK" OR "DocSet" = "CrystalReports" OR "DocSet" = "Visual Source Safe" OR "DocSet" = "VSAnalyzer" OR "DocSet" = "PSDK" OR "DocSet" = "NETFramework" OR "DocSet" = "NETFrameworkExtender" OR "DocSet" = "NETEnterpriseServers" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "kbVS700")
    Visual C#,      Query: "DocSet" = "C#" OR "DocSet" = "NETFramework" OR "DocSet" = "NETFrameworkExtender" OR "DocSet" = "DHTML" OR "DocSet" = "XML" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "C#")
    Samples, Query: "TopicType"="kbSampleProd"
    Visual FoxPro,    Query: "DocSet" = "Visual FoxPro" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "kbVFP700")
    Knowledge Base,   Query: "DocSet" = "kbKB"
    Visual J#,      Query: "DocSet" = "VJ#" OR "DocSet" = "NETFramework" OR "DocSet" = "NETFrameworkExtender" OR "DocSet" = "DHTML" OR "DocSet" = "XML" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "VJ#")
    .NET Framework 精簡(jiǎn)版, Query: "DocSet"="Smart Devices" OR "DocSet"="NetCompactFramework"
    中文(簡(jiǎn)體)文檔,    Query: ("Locale"="kbChineseSimp")

    將您的幫助集合加入上面這些篩選器的搜索范圍,可以很簡(jiǎn)單的指定文檔引擎的 DocSetList 配置項(xiàng)。它是一個(gè)逗號(hào)分隔的字符串,每一項(xiàng)最終都被寫(xiě)成 XML 數(shù)據(jù)島中的一行 DocSet 值。當(dāng)用戶(hù)使用這些篩選器時(shí),如果您的幫助頁(yè)面 XML 數(shù)據(jù)島中具有特定的 DocSet 值,您的幫助文檔就會(huì)被包括在搜索范圍中。

    NDoc 默認(rèn)將 HtmlHelpName 作為一行 DocSet 值寫(xiě)入每頁(yè)的 XML 數(shù)據(jù)島。您不需要通過(guò) DocSetList 重復(fù)定義它。

    NDoc 默認(rèn)會(huì)注冊(cè)一個(gè)新的篩選器,這個(gè)篩選器的查詢(xún)條件是 "DocSet" = "HtmlHelpName",即這個(gè)篩選器將只搜索這個(gè)幫助集合的內(nèi)容。Microsoft Help 2 允許您定義其他自定義的篩選器,但已經(jīng)超出 NDoc 的工作范圍,您需要自行查閱 VSHIK 文檔,修改 Microsoft Help 2 項(xiàng)目文件重新編譯。

    部署 Microsoft Help 2

     Microsoft Help 2 幫助系統(tǒng)維護(hù)一個(gè)注冊(cè)表(不要和 Windows 注冊(cè)表混淆),保存當(dāng)前機(jī)器中所有已安裝的幫助集合。注冊(cè)表保存了所有的幫助集合,每個(gè)幫助集合中包含的 Help Titles,幫助集合間的嵌套關(guān)系等。

    查看 Microsoft Help 2 Title 或集合之前,必須首先注冊(cè)。因此 Microsoft Help 2 文檔的部署,要比 HTML Help 1 的簡(jiǎn)單文件拷貝復(fù)雜的多。

    Windows Installer
     可以通過(guò)創(chuàng)建一個(gè) Windows Installer 安裝包程序,用于部署并注冊(cè)幫助集合和 Help Titles。VSHIK 文檔中有具體的制作步驟。不幸的是,這個(gè)過(guò)程中有很多手工的步驟,我們還沒(méi)有能夠找到自動(dòng)制作 Windows Installer 安裝包的方法。

    H2Reg
     另一格選擇是使用 helpware.net 提供的 共享軟件 H2Reg.exe。H2Reg.exe 是一個(gè)命名行工具,可以在安裝過(guò)程中使用它,完成幫助集合/Help Title 的注冊(cè)。它可以被用于任何支持命令行的安裝程序,比如對(duì)于 Windows Installer 安裝包,H2Reg 可以作為一個(gè)自定義動(dòng)作。

    如果設(shè)置 GenerateCollectionFiles 為 true,NDoc 會(huì)為 H2Reg 創(chuàng)建特定的 INI 配置文件,H2Reg 可以根據(jù)這個(gè) INI 配置文件完成 Help Title 的注冊(cè)、并合并到 VS.NET 的合并文檔集合等動(dòng)作。(記得將這個(gè) INI 配置文件包含進(jìn)您的安裝包。)

    下面是完整的步驟:

  • 設(shè)置文檔引擎的 GenerateCollectionFiles 為 true
  • 將編譯生成的幫助文件(*.HxS, *.HxI 等),和生成的 INI 文件包含到安裝包中。
  • 將 H2Reg.exe 和 H2Reg.ini (此文件可以從 H2Reg 安裝路徑中拷貝出來(lái))包含到安裝包中。
  • 配置安裝包,讓安裝包安裝時(shí),將幫助文件和生成的 INI 文件復(fù)制到安裝路徑下。
  • 安裝動(dòng)作:執(zhí)行 H2Reg,語(yǔ)法為:
    H2reg -r "CmdFile=<生成的 INI 文件的完整路徑>"
  • 卸載動(dòng)作:執(zhí)行 H2Reg,語(yǔ)法為:
    H2reg -u "CmdFile=<生成的 INI 文件的完整路徑>"
  • 注意: 先執(zhí)行 H2Reg,再刪除相應(yīng)的幫助文件和 INI 文件。

    概述
     MSDN 文檔引擎用于生成如 .NET Framework SDK 類(lèi)庫(kù)文檔樣式的代碼文檔,并編譯為 HTML Help 1 格式的單一文件(*.CHM)。

    MSDN 2003 文檔引擎是 NDoc 1.3 對(duì) MSDN 文檔引擎的改進(jìn),加入了語(yǔ)言選擇器等功能,更加接近 .NET Framework SDK 文檔的樣式。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng) 說(shuō)明
    AdditionalContentResourceDirectory頁(yè)面中涉及到的資源文件(如圖片等)所在的目錄。此目錄及其子目錄中的所有文件,將以原有的目錄結(jié)構(gòu)包含進(jìn) HTML Help 項(xiàng)目中,使用相對(duì)路徑的超鏈接不需要做大的調(diào)整。
    注意: 此文件夾中第一層次的文件,和 NDoc 生成的 HTML 文件、以及通過(guò) FilesToInclude 包含進(jìn)來(lái)的文件,將處在同一層次上,請(qǐng)依次類(lèi)推其他文件的相對(duì) URL。
    BinaryTOC是否以二進(jìn)制方式創(chuàng)建目錄樹(shù)文件。這將顯著提高大尺寸 CHM 文件的打開(kāi)速度。
    ExtensibilityStylesheet用戶(hù)自定義的 NDoc 擴(kuò)展 XSLT 轉(zhuǎn)換文件,用于轉(zhuǎn)換用戶(hù)自定義的特殊標(biāo)記。請(qǐng)參見(jiàn) NDoc 可擴(kuò)展性。
    FilesToInclude 指定需要包含在 HTML Help 項(xiàng)目中的附加文件。(1)允許使用絕對(duì)路徑或相對(duì)路徑指定,相對(duì)路徑相對(duì)于 NDoc 項(xiàng)目文件所在目錄。(2)可以使用通配符 * 和 ?,如 D:\preparedDocs\*.html。(3)可以有多個(gè)地址,用符號(hào) "|" 隔開(kāi)。
    FooterHtml

    自定義的 HTML 頁(yè)腳。您可以直接使用 HTML 代碼,其中: "%FILE_NAME%" 將被自動(dòng)替換為頁(yè)面的文件名,"%TOPIC_TITLE%" 被替換為該頁(yè)面的標(biāo)題文字,"%ASSEMBLY_NAME%" 和 "%ASSEMBLY_VERSION%" 分別被替換為當(dāng)前頁(yè)面對(duì)應(yīng)類(lèi)型所屬程序集的名稱(chēng)和版本信息。
    HeaderHtml
    自定義的 HTML 頁(yè)頭。您可以直接使用 HTML 代碼,其中: "%FILE_NAME%" 將被自動(dòng)替換為頁(yè)面的文件名,"%TOPIC_TITLE%" 則被替換為該頁(yè)面的標(biāo)題文字。
    HtmlHelpName
    一個(gè)名稱(chēng),用于命名生成的 HTML Help 項(xiàng)目以及將要生成的 CHM 文件。
    IncludeFavorites 是否在生成的 HTML Help 文件中包含“收藏”選項(xiàng)卡。
    LangID HTML Help 文件的 LangID 設(shè)置。中文版默認(rèn)為 2052。
    OutputDirectory 輸出文件目錄,生成的 .html 和 .chm 文件都將存放于此目錄。
    OutputTarget輸出目標(biāo)格式: HTML Help (.chm) 或 Web 網(wǎng)頁(yè)或兩者都輸出。
    RootPageContainsNamespaces 如果為真,RootPageFileName指定的主頁(yè)面,將在目錄樹(shù)中表示為所有命名空間結(jié)點(diǎn)的容器(父結(jié)點(diǎn))。否則,將和其他命名空間結(jié)點(diǎn)并列表示。

    RootPageFileName
    通過(guò)此項(xiàng)指定 HTML Help 文件中的主頁(yè)面文件名。注:此處主頁(yè)指打開(kāi) CHM 文件時(shí)顯示的第一個(gè)頁(yè)面,請(qǐng)通過(guò) RootPageTOCName 指定此主頁(yè)面在目錄樹(shù)中的顯示名稱(chēng);通過(guò) RootPageContainsNamespaces 指定此主頁(yè)面在目錄樹(shù)中的顯示樣式;可以通過(guò) FilesToInclude 將此文件引入到此 HTML Help 項(xiàng)目中來(lái)。
    RootPageTOCName HTML Help 文件中,主頁(yè)在目錄樹(shù)中的顯示名稱(chēng)。若 RootPageFileName 指定了某一頁(yè)面,而此項(xiàng)沒(méi)有指定,則將在目錄樹(shù)中顯示“概述”作為名稱(chēng)。注:此處主頁(yè)指打開(kāi) CHM 文件時(shí)顯示的第一個(gè)頁(yè)面。
    SdkLinksOnWeb
    如果為真,類(lèi)庫(kù)中所有指向 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)的文檔超鏈接都將指向 MSDN 的在線(xiàn)版本。否則,將指向本地版本。
    ShowVisualBasic
    是否為類(lèi)型和成員顯示 Visual Basic 語(yǔ)法塊。
    Title 此文本將顯示在每個(gè)頁(yè)面的左上角,一般填寫(xiě)類(lèi)庫(kù)的名稱(chēng)比較合適。

    將附加的文件加入要編譯的 CHM 文件中

     MSDN 文檔引擎提供了 FilesToInclude 和 AdditionalContentResourceDirectory 兩種途徑,允許您附加額外的文件。

    前者允許您使用 * 或 ? 通配符的形式指定要包含的文件路徑,可以指定多個(gè)路徑,用“|”隔開(kāi)。如果使用相對(duì)路徑,應(yīng)相對(duì)于 NDoc 項(xiàng)目文件所在的目錄。注意:在最終編譯的 CHM 中,這些被附加的文件,和其他由 NDoc 生成的 HTML 文件,處在同一級(jí)目錄中。

    后者將一個(gè)文件夾中的內(nèi)容(包括子文件夾中的全部?jī)?nèi)容)全部讀入。注意:在最終編譯的 CHM 中,AdditionalContentResourceDirectory 文件夾第一級(jí)的文件和文件夾,和其他由 NDoc 生成的 HTML 文件,處在同一級(jí)目錄中;該目錄的子目錄及其中內(nèi)容,將保持原有父子關(guān)系。例如 AdditionalContentResourceDirectory 是 D:\temp ,這個(gè)目錄中有 my.css 文件和 images 子目錄,images 目錄中有 logo.gif 文件,則 my.css 和其他 NDoc 生成的文件同級(jí),使用相對(duì)路徑引用 my.css 時(shí)為“my.css”;而引用 logo.gif 應(yīng)為“images/logo.gif”。

    請(qǐng)根據(jù)您的具體情況進(jìn)行選擇具體采用哪種方式。

    另外,RootPageFileName 指定 CHM 打開(kāi)時(shí)的第一個(gè)頁(yè)面文件,這個(gè)頁(yè)面可以是 NDoc 生成的文件,也可以是通過(guò)上述兩種方式附加進(jìn)去的某 HTML 文件。

    概述
     MSDN 2003 文檔引擎是 NDoc 1.3 對(duì) MSDN 文檔引擎的改進(jìn),加入了語(yǔ)言選擇器等功能,更加接近 .NET Framework SDK 文檔的樣式。它用于生成如 .NET Framework SDK 類(lèi)庫(kù)文檔樣式的代碼文檔,并編譯為 HTML Help 1 格式的單一文件(*.CHM)。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng)說(shuō)明

    AdditionalContentResourceDirectory

    頁(yè)面中涉及到的資源文件(如圖片等)所在的目錄。此目錄及其子目錄中的所有文件,將以原有的目錄結(jié)構(gòu)包含進(jìn) HTML Help 項(xiàng)目中,使用相對(duì)路徑的超鏈接不需要做大的調(diào)整。
    注意: 此文件夾中第一層次的文件,和 NDoc 生成的 HTML 文件、以及通過(guò) FilesToInclude 包含進(jìn)來(lái)的文件,將處在同一層次上,請(qǐng)依次類(lèi)推其他文件的相對(duì) URL。
    BinaryTOC是否以二進(jìn)制方式創(chuàng)建目錄樹(shù)文件。這將顯著提高大尺寸 CHM 文件的打開(kāi)速度。

    ExtensibilityStylesheet
    用戶(hù)自定義的 NDoc 擴(kuò)展 XSLT 轉(zhuǎn)換文件,用于轉(zhuǎn)換用戶(hù)自定義的特殊標(biāo)記。請(qǐng)參見(jiàn) NDoc 可擴(kuò)展性。

    FilesToInclude
    指定需要包含在 HTML Help 項(xiàng)目中的附加文件。(1)允許使用絕對(duì)路徑或相對(duì)路徑指定,相對(duì)路徑相對(duì)于 NDoc 項(xiàng)目文件所在目錄。(2)可以使用通配符 * 和 ?,如 D:\preparedDocs\*.html。(3)可以有多個(gè)地址,用符號(hào) "|" 隔開(kāi)。

    FooterHtml
    自定義的 HTML 頁(yè)腳。您可以直接使用 HTML 代碼,其中: "%FILE_NAME%" 將被自動(dòng)替換為頁(yè)面的文件名,"%TOPIC_TITLE%" 被替換為該頁(yè)面的標(biāo)題文字,"%ASSEMBLY_NAME%" 和 "%ASSEMBLY_VERSION%" 分別被替換為當(dāng)前頁(yè)面對(duì)應(yīng)類(lèi)型所屬程序集的名稱(chēng)和版本信息。

    HeaderHtml
    自定義的 HTML 頁(yè)頭。您可以直接使用 HTML 代碼,其中: "%FILE_NAME%" 將被自動(dòng)替換為頁(yè)面的文件名,"%TOPIC_TITLE%" 則被替換為該頁(yè)面的標(biāo)題文字。

    HtmlHelpName
    一個(gè)名稱(chēng),用于命名生成的 HTML Help 項(xiàng)目以及將要生成的 CHM 文件。

    IncludeFavorites
    是否在生成的 HTML Help 文件中包含“收藏”選項(xiàng)卡。
    LangID HTML Help 文件的 LangID 設(shè)置。中文版默認(rèn)為 2052。

    OutputDirectory
    輸出文件目錄,生成的 .html 和 .chm 文件都將存放于此目錄。

    OutputTarget
    輸出目標(biāo)格式: HTML Help (.chm) 或 Web 網(wǎng)頁(yè)或兩者都輸出。

    RootPageContainsNamespaces
    如果為真,RootPageFileName 指定的主頁(yè)面,將在目錄樹(shù)中表示為所有命名空間結(jié)點(diǎn)的容器(父結(jié)點(diǎn))。否則,將和其他命名空間結(jié)點(diǎn)并列表示。

    RootPageFileName
    通過(guò)此項(xiàng)指定 HTML Help 文件中的主頁(yè)面文件名。注:此處主頁(yè)指打開(kāi) CHM 文件時(shí)顯示的第一個(gè)頁(yè)面,請(qǐng)通過(guò) RootPageTOCName 指定此主頁(yè)面在目錄樹(shù)中的顯示名稱(chēng);
    RootPageContainsNamespaces
    指定此主頁(yè)面在目錄樹(shù)中的顯示樣式;可以通過(guò) FilesToInclude 將此文件引入到此 HTML Help 項(xiàng)目中來(lái)。

    RootPageTOCName
    HTML Help 文件中,主頁(yè)在目錄樹(shù)中的顯示名稱(chēng)。若
    RootPageFileName 指定了某一頁(yè)面,而此項(xiàng)沒(méi)有指定,則將在目錄樹(shù)中顯示“概述”作為名稱(chēng)。注:此處主頁(yè)指打開(kāi) CHM 文件時(shí)顯示的第一個(gè)頁(yè)面。
    SdkLinksOnWeb如果為真,類(lèi)庫(kù)中所有指向 .NET Framework 標(biāo)準(zhǔn)類(lèi)庫(kù)的文檔超鏈接都將指向 MSDN 的在線(xiàn)版本。否則,將指向本地版本。
    Title 此文本將顯示在每個(gè)頁(yè)面的左上角,一般填寫(xiě)類(lèi)庫(kù)的名稱(chēng)比較合適。

    將附加的文件加入要編譯的 CHM 文件中
     MSDN 文檔引擎提供了 FilesToInclude 和 AdditionalContentResourceDirectory 兩種途徑,允許您附加額外的文件。

    前者允許您使用 * 或 ? 通配符的形式指定要包含的文件路徑,可以指定多個(gè)路徑,用“|”隔開(kāi)。如果使用相對(duì)路徑,應(yīng)相對(duì)于 NDoc 項(xiàng)目文件所在的目錄。注意:在最終編譯的 CHM 中,這些被附加的文件,和其他由 NDoc 生成的 HTML 文件,處在同一級(jí)目錄中。

    后者將一個(gè)文件夾中的內(nèi)容(包括子文件夾中的全部?jī)?nèi)容)全部讀入。注意:在最終編譯的 CHM 中,AdditionalContentResourceDirectory 文件夾第一級(jí)的文件和文件夾,和其他由 NDoc 生成的 HTML 文件,處在同一級(jí)目錄中;該目錄的子目錄及其中內(nèi)容,將保持原有父子關(guān)系。例如 AdditionalContentResourceDirectory 是 D:\temp ,這個(gè)目錄中有 my.css 文件和 images 子目錄,images 目錄中有 logo.gif 文件,則 my.css 和其他 NDoc 生成的文件同級(jí),使用相對(duì)路徑引用 my.css 時(shí)為“my.css”;而引用 logo.gif 應(yīng)為“images/logo.gif”。

    請(qǐng)根據(jù)您的具體情況進(jìn)行選擇具體采用哪種方式。

    另外,RootPageFileName 指定 CHM 打開(kāi)時(shí)的第一個(gè)頁(yè)面文件,這個(gè)頁(yè)面可以是 NDoc 生成的文件,也可以是通過(guò)上述兩種方式附加進(jìn)去的某 HTML 文件。
     
      概述
     XML 文檔引擎是 NDoc 中最簡(jiǎn)單的文檔引擎,它直接輸出 NDoc 生成的中間 XML 文件。主要幫助開(kāi)發(fā)人員調(diào)試 NDoc 擴(kuò)展 XSLT 轉(zhuǎn)換,以及制作新的自定義文檔引擎。

    請(qǐng)參見(jiàn) NDoc 可擴(kuò)展性 和 實(shí)現(xiàn)一個(gè)新的文檔引擎。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng) 說(shuō)明
    OutputFile輸出 XML 文件名。XML 文檔引擎輸出 NDoc 文檔生成器所使用的中間 XML 格式數(shù)據(jù),適用于自定義文檔引擎的制作與調(diào)試。

    概述
     JavaDoc 文檔引擎用于創(chuàng)建類(lèi)似 JavaDoc (Java 社區(qū)中,自動(dòng)創(chuàng)建代碼文檔的工具) 布局和格式的 HTML 代碼文檔。

    因?yàn)槿鄙僮銐虻年P(guān)注度,此文檔引擎的開(kāi)發(fā)并不活躍。 如果您有興趣進(jìn)一步完善此文檔引擎,請(qǐng)聯(lián)絡(luò) NDoc 項(xiàng)目管理員。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng) 說(shuō)明
    Title JavaDoc 項(xiàng)目標(biāo)題。
    OutputDirectory 存放輸出 HTML 文件的文件夾。
    可以為絕對(duì)路徑或者相對(duì)于 NDoc 項(xiàng)目文件的相對(duì)路徑。

    概述
     Linear HTML 文檔引擎用于生成單一 HTML 文件的代碼文檔。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng) 說(shuō)明
    OutputDirectory目標(biāo) HTML 文件的輸出目錄。
    TitleHTML 頁(yè)的標(biāo)題。
    IncludeTypeMemberDetails是否輸出類(lèi)型成員的細(xì)節(jié)(如:是否顯示字段、屬性的“備注”等,是否單獨(dú)顯示方法的參數(shù)表格)
    MethodParametersInTable 是否在同一表格中顯示方法的參數(shù)列表。
    TypeIncludeRegexp 一個(gè)正則表達(dá)式,設(shè)置此項(xiàng)可以過(guò)濾類(lèi)型的輸出,只有符合正則表達(dá)式的類(lèi)型被輸出。留空白則輸出全部。
    amespaceExcludeRegexp一個(gè)正則表達(dá)式,設(shè)置此項(xiàng)可以過(guò)濾命名空間的輸出,符合正則表達(dá)式的命名空間被過(guò)濾。留空白則關(guān)閉過(guò)濾。

    概述
     LaTeX 文檔引擎用于創(chuàng)建 dvi、pdf、postscript 等 LaTeX 格式的代碼文檔。

    您需要安裝一個(gè) LaTeX 編譯器,比如免費(fèi)的 MiKTeX。關(guān)于 LaTeX 的中文支持問(wèn)題,請(qǐng)參見(jiàn) CTeX: 中文 TeX 網(wǎng)站 中的相關(guān)內(nèi)容。

    配置
     所有文檔引擎都具有一些 通用的配置項(xiàng)。

    配置項(xiàng)說(shuō)明
    OutputDirectory文件輸出目錄。
    LatexCompiler LaTeX編譯器路徑。(如果您沒(méi)有安裝 LaTeX 編譯器,請(qǐng)保持空白。)
    TexFileBaseName 目標(biāo) LaTeX 文件名,請(qǐng)不要加擴(kuò)展名。

    NDoc 內(nèi)置的 MSDN, MSDN 2003, VS.NET 文檔引擎,支持 C# 程序員參考中的所有 XML 文檔注釋標(biāo)記。

    NDoc 支持?jǐn)U充的標(biāo)記和語(yǔ)法。某些標(biāo)記只能用于特定的類(lèi)型(類(lèi),結(jié)構(gòu),委托,接口,枚舉)或成員(字段,屬性,方法,事件等),請(qǐng)參見(jiàn)標(biāo)記用法。

    NDoc 將標(biāo)記區(qū)分為三類(lèi): Section 標(biāo)記,Block 標(biāo)記,Inline 標(biāo)記。

    Section 標(biāo)記
     Section 標(biāo)記用于定義不同的代碼文檔的區(qū)域。它們都是頂級(jí)標(biāo)記,Block 標(biāo)記、Inline 標(biāo)記都應(yīng)包含在某個(gè) Section 標(biāo)記的內(nèi)部。(除非自定義了擴(kuò)展 XSLT 轉(zhuǎn)換,否則,在 Section 標(biāo)記外部的 Block 標(biāo)記或 Inline 標(biāo)記都被忽略。)

    標(biāo)記 說(shuō)明
    <event>[NDoc 擴(kuò)充]對(duì)某個(gè)成員可能引發(fā)的事件的說(shuō)明。
    <example>“示例”,幫助類(lèi)庫(kù)使用者理解類(lèi)型/成員使用方法的示例代碼。
    <exception>對(duì)某個(gè)成員可以?huà)伋龅漠惓5恼f(shuō)明。
    <exclude/>[NDoc 擴(kuò)充]指示 NDoc 文檔引擎將被標(biāo)記的類(lèi)型/成員排除在代碼文檔之外。與文檔引擎的“可見(jiàn)性”配置不符的,以 exclude 優(yōu)先。
    <include>將代碼文件外部的某 XML 文件中的一部分包含進(jìn)代碼文件來(lái)。
    <overloads> [NDoc 擴(kuò)充]為“重載列表”頁(yè)面準(zhǔn)備摘要、備注、示例等文檔內(nèi)容。只需在重載成員的第一個(gè)成員前面書(shū)寫(xiě)此區(qū)域即可。

    <overloads> 標(biāo)記有兩種形式:

    簡(jiǎn)單的形式,直接在 overload 中寫(xiě)文本,這些文本被處理為“重載列表”頁(yè)面的摘要。沒(méi)有備注、示例等區(qū)域。
    復(fù)雜的形式,在 overload 內(nèi)部,包含 summary, remarks, example 等標(biāo)記分別表示“重載列表”頁(yè)面的摘要、備注、示例等。
    示例:

    ///<overloads>This method has two overloads.</overloads>
    ///<summary>This overload just says hello.</summary>
    public void SayHello() { ... }
    ///<summary>This one says hello to someone.</summary>
    public void SayHello(string toSomeone) { ... }
    <param>成員的參數(shù)說(shuō)明。
    <permission>訪(fǎng)問(wèn)某成員所必需的 .NET Framework 安全性 CodeAccessPermission。


    <preliminary> [NDoc 擴(kuò)充]


    將某類(lèi)型/成員標(biāo)記為“預(yù)發(fā)布”。內(nèi)部的文本被當(dāng)作警告文本用紅色顯示,可以包含 <para> 表示多行文本。如果缺少內(nèi)部文本,則顯示默認(rèn)的警告文本: “[此文檔為預(yù)發(fā)布版本,在未來(lái)版本中有可能改變。]”。

    如果需要把全部類(lèi)型/成員都標(biāo)記為“預(yù)發(fā)布”,請(qǐng)使用文檔引擎的 Preliminary 配置項(xiàng)。

    <remarks>“備注”,對(duì) <summary> 的進(jìn)一步注解。
    <returns>“返回值”。
    <seealso> 向頁(yè)面的“請(qǐng)參見(jiàn)”區(qū)域添加一個(gè)鏈接。

    請(qǐng)不要將此標(biāo)記包含在 <remarks> 內(nèi)部,它是一個(gè)頂級(jí)標(biāo)記。

    兩種可選的語(yǔ)法:

    <seealso href="http://www.microsoft.com/china/msdn/">MSDN(CHS)</seealso>
    <seealso cref="System.Data.DataSet">DataSet</seealso>

    <summary>
    “摘要”,對(duì)類(lèi)型/成員的摘要說(shuō)明。
    <threadsafety>[NDoc 擴(kuò)充]“線(xiàn)程安全”,說(shuō)明類(lèi)型在多線(xiàn)程環(huán)境中是否安全。

    NDoc 提供 static 和 instance 兩個(gè)布爾的屬性,可以自動(dòng)生成像 .NET Framework SDK 類(lèi)庫(kù)文檔中那樣的標(biāo)準(zhǔn)文本。

    threadsafety 標(biāo)記內(nèi)部可以包含額外的文本,會(huì)被顯示到標(biāo)準(zhǔn)文本的下方,說(shuō)明額外的信息。例如:

    /// <summary>The summary description for SafeClass.</summary>
    /// <threadsafety static="true" instance="true">
    /// <para>More information about using this class across thread</para>
    /// </threadsafety>
    public class SafeClass() { ... }
    <value>
    “屬性值”。

    Block 標(biāo)記
     Block 標(biāo)記用于 Section 標(biāo)記的內(nèi)部,它們將顯示在單獨(dú)的行中。

    標(biāo)記 說(shuō)明
    <code>多行的代碼塊。
    <list>一個(gè)列表或表格。
    <note>[NDoc 擴(kuò)充]“注意”塊。

    例如:

    /// <summary>
    /// <note>This is a note in the summary.</note>
    /// </summary>
    public class SomeClass() { ... }
    將生成:

    注意 This is a note in the summary.

    <para>表示一個(gè)段落。

    Inline 標(biāo)記
     Inline 標(biāo)記可以用于其他 Section 標(biāo)記或 Block 標(biāo)記內(nèi)部,它們將和前后的文本顯示在同一行中。

    標(biāo)記 說(shuō)明
    <c>
    將內(nèi)部文本格式化為代碼樣式,用于表示行文中提到的短小代碼片段。
    <paramref> 加入指向方法參數(shù)的鏈接。
    <see>加入指向某個(gè)類(lèi)型/成員或網(wǎng)絡(luò) URL 的鏈接。

    兩種可選的語(yǔ)法:

    <see href="http://www.microsoft.com/china/msdn/">MSDN(CHS)</see>
    <see cref="System.Data.DataSet">DataSet</see>
    <see langword="xxx"/>
    其中 xxx 可以是 null, sealed, static, abstract 或 virtual。

    下面的表格顯示了各 block 標(biāo)記的有效性。



     <c> 標(biāo)記指示將其內(nèi)部的文本表示為代碼樣式,Inline 標(biāo)記,用于表示行文中的代碼片斷。

    <c>text</c>
     其中:

    text
     要標(biāo)記為代碼樣式的文本。
     應(yīng)用于
     可用于其他標(biāo)記內(nèi)部。

    備注
     如果需要標(biāo)記多行的代碼塊,請(qǐng)使用 <code> 標(biāo)記。

    示例
     [C#]
     public class MyClass
     {
     /// <summary>
     /// <c>MyMethod</c> is a method in the <c>MyClass</c> class.
     /// </summary>
     public static void MyMethod(int Int1)
     {
     }
     }

      <code> 標(biāo)記指示將其內(nèi)部的文本表示為代碼樣式,Block 標(biāo)記,用于表示多行的代碼塊。

    <code [lang="language"][escaped="true"]>content</code>
     其中:

    lang="language" [NDoc 擴(kuò)充]
     語(yǔ)言選擇器,表示此代碼塊僅適用于某種編程語(yǔ)言。(可選)
     escaped="true" [NDoc 擴(kuò)充]
     若 content 中含有 XML 子級(jí),將它們視為代碼的一部分。注意:content 仍然需要是格式完好的 XML。(可選)
     content
     將被表示為代碼塊的文本。
     應(yīng)用于
     可用于其他 Section 標(biāo)記或 Block 標(biāo)記內(nèi)部。

    備注
     使用 lang 屬性表示語(yǔ)言選擇器,標(biāo)準(zhǔn)的語(yǔ)言有: Visual Basic, C#, C++ 及 JScript。若代碼塊適用于多種語(yǔ)言,則用逗號(hào)隔開(kāi),比如“Visual Basic, C#, C++”。

    escaped 為 true 時(shí),其內(nèi)部所有其他標(biāo)記都被轉(zhuǎn)義為代碼塊的一部分。

    注意 content 內(nèi)容必須是格式完好的 XML 注釋。否則整個(gè)注釋塊可能被忽略或出錯(cuò)!!!

    示例
     下面示例中,因?yàn)?escaped="true",因此直接寫(xiě)入了要作為代碼塊的 XML 內(nèi)容。 Note how, in the following comments, the xml text can entered verbatim because the escaped="true" attribute has been applied.

    [C#]
     /// <summary>
     /// Loads the XML.
     /// </summary>
     /// <example> The XML should have the following format.
     /// <code escaped="true">
     /// <root>
     /// <member name="name"/>
     /// </root>
     /// </code>
     /// </example>
     public void LoadXml(string xml)
     {
     //do something here...
     }

    <event> 標(biāo)記用于說(shuō)明被標(biāo)記的方法可能引發(fā)的事件。Section 標(biāo)記。

    <event cref="member">description</event>
     其中:

    cref = "member"
     表示可能引發(fā)的事件。書(shū)寫(xiě)時(shí),如果可能引發(fā)的事件是同一類(lèi)型的事件,member 可以直接寫(xiě)事件名稱(chēng)(注意大小寫(xiě));如果是其他類(lèi)型的,建議您寫(xiě)該事件的完全限定名稱(chēng)。C# 編譯器將檢查該事件是否存在。在輸出的 XML 文檔文件中,C# 編譯器會(huì)自動(dòng)轉(zhuǎn)換簡(jiǎn)寫(xiě)的 member 為完全限定名稱(chēng)。
     description
     附加的說(shuō)明,比如在什么情況下引發(fā)該事件。
     應(yīng)用于
     方法成員。

    備注

    示例

      <example> 標(biāo)記表示“示例”區(qū)域。Section 標(biāo)記。用于書(shū)寫(xiě)能輔助使用者理解并快速上手的示例代碼等內(nèi)容。

    <example>description</example>
    其中:

    description
    示例及其說(shuō)明。
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    此標(biāo)記經(jīng)常和 <code> 標(biāo)記聯(lián)用。

    示例
    [C#]
    public class MyClass
    {
    /// <summary>
    /// The GetZero method.
    /// </summary>
    /// <example> This sample shows how to call the GetZero method.
    /// <code>
    /// class MyClass
    /// {
    /// public static int Main()
    /// {
    /// return GetZero();
    /// }
    /// }
    /// </code>
    /// </example>
    public static int GetZero()
    {
    return 0;
    }
    }

    <exception> 標(biāo)記用于說(shuō)明一個(gè)成員可能拋出的異常。

    <exception cref="member">description</exception>
    其中:

    cref = "member"
    表示可能拋出的異常類(lèi)型。書(shū)寫(xiě)時(shí),如果可能拋出的異常是同一命名空間下的異常類(lèi)型,member 可以直接寫(xiě)異常名稱(chēng)(注意大小寫(xiě));如果是其他命名空間的,建議您寫(xiě)該異常類(lèi)型的完全限定名稱(chēng)。C# 編譯器將檢查該異常是否存在。在輸出的 XML 文檔文件中,C# 編譯器會(huì)自動(dòng)轉(zhuǎn)換簡(jiǎn)寫(xiě)的 member 為完全限定名稱(chēng)。
    description
    說(shuō)明信息,比如在什么情況下拋出該異常。
    應(yīng)用于
    屬性, 方法, 事件, 運(yùn)算符, 類(lèi)型轉(zhuǎn)換

    備注

    示例
    [C#]
    using System;

    /// comment for class
    public class EClass : Exception
    {
    // class definition ...
    }

    class TestClass
    {
    /// <exception cref="EClass">Thrown when... .</exception>
    public static void Main()
    {
    ...
    throw new EClass();
    ...
    }
    }

    <exclude/> 標(biāo)記指示 NDoc 文檔引擎將被標(biāo)記的類(lèi)型/成員排除在代碼文檔之外。

    <exclude/>
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    與文檔引擎的“可見(jiàn)性”配置不符的,以 exclude 優(yōu)先。

    示例
    請(qǐng)參見(jiàn)

    <include> 標(biāo)記指示將代碼文件(*.cs)外部的某 XML 文件中的一部分、作為 XML 文檔注釋、包含進(jìn)代碼文件來(lái)。

    <include file='filename' path='tagpath[@name="id"]' />
    其中:

    filename
    包含 XML 文檔注釋的文件名。該文件名可包含路徑。將 filename 括在單引號(hào)中 (' ')。
    tagpath
    filename 中指向標(biāo)記名的標(biāo)記路徑(使用 XPath 語(yǔ)法)。將此路徑括在單引號(hào)中 (' ')。
    name
    注釋前邊的標(biāo)記中的名稱(chēng)說(shuō)明符;名稱(chēng)具有一個(gè) id。
    id
    位于注釋之前的標(biāo)記的 ID。將此 ID 括在雙引號(hào)中 (" ")。
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    這是除了將文檔注釋直接置于源代碼文件中之外的另一種可選方法。

    <include> 標(biāo)記使用 XML XPath 語(yǔ)法。有關(guān)自定義 <include> 使用的方法,請(qǐng)參見(jiàn) XPath 文檔。

    示例
    以下是一個(gè)多文件示例。第一個(gè)文件使用 <include>,如下所列:

    [C#]
    /// <include file='xml_include_tag.doc' path='MyDocs/MyMembers[@name="test"]/*' />
    class Test
    {
    public static void Main()
    {
    }
    }

    /// <include file='xml_include_tag.doc' path='MyDocs/MyMembers[@name="test2"]/*' />
    class Test2
    {
    public void Test()
    {
    }
    }
    第二個(gè)文件 xml_include_tag.doc 包含下列文檔注釋:

    <MyDocs>

    <MyMembers name="test">
    <summary>
    The summary for this type.
    </summary>
    </MyMembers>

    <MyMembers name="test2">
    <summary>
    The summary for this other type.
    </summary>
    </MyMembers>

    </MyDocs>
    編譯器輸出的 XML 文檔
    <?xml version="1.0"?>
    <doc>
    <assembly>
    <name>t2</name>
    </assembly>
    <members>
    <member name="T:Test">
    <summary>
    The summary for this type.
    </summary>
    </member>
    <member name="T:Test2">
    <summary>
    The summary for this other type.
    </summary>
    </member>
    </members>
    </doc>

      <list> 標(biāo)記表示一個(gè)列表(數(shù)字列表或符號(hào)列表),或一個(gè)表格,或一個(gè)定義表。Block 標(biāo)記。

    <list type="bullet" | "number" | "table" | "definition">
    <listheader>
    <term>term</term>
    <description>description</description>
    </listheader>
    <item>
    <term>term</term>
    <description>description</description>
    </item>
    </list>
    其中:

    term
    要定義的項(xiàng),該項(xiàng)將在 description 中說(shuō)明/定義。
    description
    對(duì) term 的說(shuō)明/定義。
    備注
    <list> 可以表示為四種樣式:bullet 為符號(hào)列表,即對(duì)應(yīng)于 HTML 中的 UL 列表;number 為數(shù)字列表,即對(duì)應(yīng)于 HTML 中的 OL 列表;table 為表格,將以表格形式表示;definition 為定義列表,顯示效果就像本頁(yè)上方“其中”二字下面對(duì) term 和 description 的定義那樣。

    <listheader> 對(duì) table 和 definition 有效。對(duì) table,需要為 term 和 description 兩列分別指定列標(biāo)題。對(duì) definition,需要指定標(biāo)題文本,如本頁(yè)上方的“其中:”那一行。

    <item> 塊表示列表中的一項(xiàng)。item 包含子元素 term 和 description。對(duì) bullet 和 number 列表,term 無(wú)效也不需要寫(xiě)。對(duì) table 表,可以沒(méi)有 term,只寫(xiě) description。對(duì) definition 表,term 和 description 都應(yīng)該有。

    列表可以根據(jù)需要包含多個(gè) <item> 塊。

    示例

      <note> 標(biāo)記表示一個(gè)“注意”塊。

    <note type="caution" | "inheritinfo" | "implementnotes">
    description
    </note>

    其中:

    description
    注意事項(xiàng)。
    應(yīng)用于
    可用于其他標(biāo)記內(nèi)部。

    備注
    caution 將顯示為“警告”,inheritinfo 將顯示為“對(duì)繼承者的說(shuō)明”,implementnotes 將顯示為“對(duì)實(shí)施者的說(shuō)明”。

    示例

      <overloads> 標(biāo)記為“重載列表”頁(yè)面提供文檔。

    簡(jiǎn)單語(yǔ)法
    <overloads>
    summary_description
    </overloads>

    復(fù)合語(yǔ)法
    <overloads>
    <summary>summary_description</summary>
    [<remarks>remarks_description</remarks>]
    [<example>examples_description</example>]
    </overloads>

    應(yīng)用于
    屬性, 方法, 事件, 運(yùn)算符。

    備注
    只需在重載成員的第一個(gè)成員前面書(shū)寫(xiě)此區(qū)域即可。

    此標(biāo)記有兩種形式:

    簡(jiǎn)單的形式,直接在 overload 中寫(xiě)文本,這些文本被處理為“重載列表”頁(yè)面的摘要。沒(méi)有備注、示例等區(qū)域。
    復(fù)雜的形式,在 overload 內(nèi)部,包含 summary, remarks, example 等標(biāo)記分別表示“重載列表”頁(yè)面的摘要、備注、示例等。
    示例

    ///<overloads>This method has two overloads.</overloads>
    ///<summary>This overload just says hello.</summary>
    public void SayHello() { ... }
    ///<summary>This one says hello to someone.</summary>
    public void SayHello(string toSomeone) { ... }

    <para> 標(biāo)記表示一個(gè)段落。

    <para [lang="language"]>content</para>
    where:

    lang="language" [NDoc 擴(kuò)充]
    表示語(yǔ)言選擇器,指示此段落僅對(duì)某種編程語(yǔ)言有效。(可選)
    content
    段落文本。
    應(yīng)用于
    可用于其他標(biāo)記內(nèi)部。

    備注
    此標(biāo)記經(jīng)常用于 <summary>, <remarks>, 及 <returns> 等標(biāo)記內(nèi)部。

    使用 lang 屬性表示語(yǔ)言選擇器,標(biāo)準(zhǔn)的語(yǔ)言有: Visual Basic, C#, C++ 及 JScript。若代碼塊適用于多種語(yǔ)言,則用逗號(hào)隔開(kāi),比如“Visual Basic, C#, C++”。

    示例
    請(qǐng)參見(jiàn) <summary> 的示例。

    The <param> tag describes one of the parameters for the method.

    <param name='name'>description</param>
    where:

    name
    The name of a method parameter. Enclose the name in single quotation marks (' ').
    description
    A description for the parameter.
    Applies To
    Property, Method, Event, Operator.

    Remarks
    Example
    [C#]
    /// text for class MyClass
    public class MyClass
    {
    /// <param name="Int1">Used to indicate status.</param>
    public static void MyMethod(int Int1)
    {
    }
    /// text for Main
    public static void Main ()
    {
    }
    }
    See Also

      <paramref> 標(biāo)記引用一個(gè)參數(shù),將以代碼樣式表示該參數(shù)名稱(chēng)。

    <paramref name="name"/>
    其中:

    name
    參數(shù)的名稱(chēng)。
    應(yīng)用于
    可用于其他標(biāo)記內(nèi)部。

    備注
    示例
    [C#]
    /// text for class MyClass
    public class MyClass
    {
    /// <remarks>MyMethod is a method in the MyClass class.
    /// The <paramref name="Int1"/> parameter takes a number.
    /// </remarks>
    public static void MyMethod(int Int1)
    {
    }

    /// text for Main
    public static void Main ()
    {
    }
    }

      <permission> 標(biāo)記說(shuō)明訪(fǎng)問(wèn)某成員所必需的 .NET Framework 安全性 CodeAccessPermission。

    <permission cref="member">description</permission>
    其中:

    cref = "member"
    表示需要的 CodeAccessPermission 類(lèi)型。書(shū)寫(xiě)時(shí),如果 CodeAccessPermission 是同一命名空間下的類(lèi)型,member 可以直接寫(xiě)其名稱(chēng)(注意大小寫(xiě));如果是其他命名空間的,建議您寫(xiě)該 CodeAccessPermission 的完全限定名稱(chēng)。C# 編譯器將檢查該 CodeAccessPermission 是否存在。在輸出的 XML 文檔文件中,C# 編譯器會(huì)自動(dòng)轉(zhuǎn)換簡(jiǎn)寫(xiě)的 member 為完全限定名稱(chēng)。
    description
    其他說(shuō)明。
    應(yīng)用于
    所有成員。

    備注
    System.Security.PermissionSet 使您得以指定對(duì)成員的訪(fǎng)問(wèn)。

    示例
    [C#]
    using System;
    class TestClass
    {
    /// <permission cref="System.Security.PermissionSet">Everyone can access this method.</permission>
    public static void Test()
    {
    }
    public static void Main()
    {
    }
    }
     
      <preliminary> 標(biāo)記將類(lèi)型/成員標(biāo)記為“預(yù)發(fā)布”。

    <preliminary>[description]</preliminary>
    其中:

    description
    對(duì)“預(yù)發(fā)布”的說(shuō)明文本。(可選)
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    若沒(méi)有指定 description,則以紅色顯示默認(rèn)的文本: “[此文檔為預(yù)發(fā)布版本,在未來(lái)版本中有可能改變。]”

    如果需要把全部類(lèi)型/成員都標(biāo)記為“預(yù)發(fā)布”,請(qǐng)使用文檔引擎的 Preliminary 配置項(xiàng)。

    示例
    [C#]
    // The class summary will get the default message
    /// <preliminary/>
    public class MyClass
    {
    /// <preliminary>
    /// <para>This method is just for testing right now. It might be removed in the near future</para>
    /// </preliminary>
    public void Dump ()
    {
    }
    }

      <remarks> 標(biāo)記表示對(duì)類(lèi)型或成員的“備注”。

    <remarks>description</remarks>
    其中:

    description
    對(duì)類(lèi)型/成員的“備注”。
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    <remarks> 標(biāo)記用于對(duì) <summary> 摘要信息的補(bǔ)充。.

    示例
    [C#]
    /// <summary>
    /// You may have some primary information about this class.
    /// </summary>
    /// <remarks>
    /// You may have some additional information about this class.
    /// </remarks>
    public class MyClass
    {
    /// text for Main
    public static void Main ()
    {
    }
    }

      <returns> 標(biāo)記用于說(shuō)明方法的返回值。

    <returns>description</returns>
    其中:

    description
    對(duì)方法的返回值的說(shuō)明。
    應(yīng)用于
    方法。

    備注
    示例
    [C#]
    /// text for class MyClass
    public class MyClass
    {
    /// <returns>Returns zero.</returns>
    public static int GetZero()
    {
    return 0;
    }

    /// text for Main
    public static void Main ()
    {
    }
    }

      <see> 標(biāo)記用于在行文中添加一個(gè)超鏈接。

    <see cref="member">[label]</see>

    <see href="URL">[label]</see>

    <see langword="null | sealed
    | static | abstract | virtual | true | false"/>
    其中:

    label
    超鏈接的顯示文本。
    cref = "member"
    表示要鏈接到的類(lèi)型(成員)。書(shū)寫(xiě)時(shí),如果要鏈接到的類(lèi)型(成員)是同一命名空間(類(lèi)型)中的類(lèi)型(成員),member 可以直接寫(xiě)它的名稱(chēng)(注意大小寫(xiě));如果是其他命名空間(類(lèi)型)的,建議您寫(xiě)該類(lèi)型(成員)的完全限定名稱(chēng)。C# 編譯器將檢查該類(lèi)型(成員)是否存在。在輸出的 XML 文檔文件中,C# 編譯器會(huì)自動(dòng)轉(zhuǎn)換簡(jiǎn)寫(xiě)的 member 為完全限定名稱(chēng)。
    href = "URL" [NDoc 擴(kuò)充]
    一個(gè)網(wǎng)絡(luò) URL 地址。
    langword [NDoc 擴(kuò)充]
    將會(huì)被當(dāng)作 .NET 關(guān)鍵字粗體顯示。如果 langword 是下面?zhèn)渥⒅械谋砀窭锏哪硞€(gè)關(guān)鍵字,還將會(huì)被替換為相應(yīng)的說(shuō)明文本。
    應(yīng)用于
    可用于其他標(biāo)記內(nèi)部。

    備注
     使用 <seealso> 標(biāo)記將超鏈接加入到頁(yè)面的“請(qǐng)參見(jiàn)”區(qū)域。

    注意: 在 NDoc 1.3 中,對(duì)于 MSDN 和 VS.NET 文檔引擎,如果一個(gè)區(qū)域出現(xiàn)了多個(gè)指向同一個(gè)類(lèi)型/成員的文檔的 <see>,則只轉(zhuǎn)換第一個(gè)為超鏈接,其余的不表示為超鏈接、只顯示為粗體。這將使頁(yè)面不至于太雜亂。

    可識(shí)別的 langword
     如果 langword 為下表中的關(guān)鍵字之一,則會(huì)顯示右側(cè)相應(yīng)的說(shuō)明文本。

    langword顯示
    null 空引用(Visual Basic 中為 Nothing)
    sealed密封的(Visual Basic 中為 NotInheritable)
    static 靜態(tài)(Visual Basic 中為 Shared)
    abstract抽象(Visual Basic 中為 MustInherit)
    virtual虛擬(Visual Basic 中為 CanOverride)

    示例
     請(qǐng)參見(jiàn) <summary> 中的示例。

    <seealso> 標(biāo)記用于在頁(yè)面的“請(qǐng)參見(jiàn)”區(qū)域添加一個(gè)超鏈接。

    <seealso cref="member">[label]</seealso>

    <seealso href="URL">[label]</seealso>
    其中:

    label
    超鏈接的顯示文本。
    cref = "member"
    表示要鏈接到的類(lèi)型(成員)。書(shū)寫(xiě)時(shí),如果要鏈接到的類(lèi)型(成員)是同一命名空間(類(lèi)型)中的類(lèi)型(成員),member 可以直接寫(xiě)它的名稱(chēng)(注意大小寫(xiě));如果是其他命名空間(類(lèi)型)的,建議您寫(xiě)該類(lèi)型(成員)的完全限定名稱(chēng)。C# 編譯器將檢查該類(lèi)型(成員)是否存在。在輸出的 XML 文檔文件中,C# 編譯器會(huì)自動(dòng)轉(zhuǎn)換簡(jiǎn)寫(xiě)的 member 為完全限定名稱(chēng)。
    href = "URL" [NDoc 擴(kuò)充]
    一個(gè)網(wǎng)絡(luò) URL 地址。
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    使用 <see> 標(biāo)記在行文中添加超鏈接。

    請(qǐng)不要將此標(biāo)記包含在 <remarks> 標(biāo)記內(nèi)部。

    示例
    請(qǐng)參見(jiàn) <summary> 中的示例。

    <summary> 標(biāo)記用于對(duì)類(lèi)型或成員的摘要說(shuō)明。

    <summary>description</summary>
    其中:

    description
    對(duì)類(lèi)型或成員的摘要說(shuō)明。
    應(yīng)用于
    所有的類(lèi)型及成員。

    備注
    此標(biāo)記是所有類(lèi)型及成員最基本的說(shuō)明,一般的,應(yīng)為每個(gè)公共的、可見(jiàn)的類(lèi)型/成員書(shū)寫(xiě) summary 文檔。在 Visual Studio .NET IDE 的智能感知功能及對(duì)象查看器,還有其他大多數(shù)開(kāi)發(fā)工具,都會(huì)顯示 summary 信息。

    <remarks> 標(biāo)記用于更詳細(xì)的說(shuō)明。

    示例
    [C#]
    /// text for class MyClass
    public class MyClass
    {
    /// <summary>MyMethod is a method in the MyClass class.
    /// <para>Here's how you could make a second paragraph in a description. <see cref="System.Console.WriteLine"/> for information about output statements.</para>
    /// <seealso cref="MyClass.Main"/>
    /// </summary>
    public static void MyMethod(int Int1)
    {
    }

    /// text for Main
    public static void Main ()
    {
    }
    }

      <threadsafety> 標(biāo)記用于說(shuō)明類(lèi)型在多線(xiàn)程環(huán)境中是否安全。
    <threadsafety static="true|false" instance="true|false"/>
    其中:

    static="true|false"
    指示類(lèi)型的靜態(tài)成員在多線(xiàn)程環(huán)境中是否是安全的。
    instance="true|false"
    指示類(lèi)型的實(shí)例成員在多線(xiàn)程環(huán)境中是否是安全的。
    應(yīng)用于
    類(lèi), 結(jié)構(gòu)。

    備注
    示例
    [C#]
    /// <threadsafety static="true" instance="false"/>
    public class MyClass
    {
    /// not safe across threads
    public void InstanceMethod()
    {
    }

    /// safe across threads
    public static void StaticMethod()
    {
    }
    }

    <value> 標(biāo)記用于說(shuō)明屬性的值。

    <value>property-description</value>
    其中:

    property-description
    對(duì)屬性值的說(shuō)明。
    應(yīng)用于
    屬性。

    備注
    按照約定,總是應(yīng)該為屬性書(shū)寫(xiě) <value> 標(biāo)記。

    示例
    [C#]
    /// text for class MyClass
    public class MyClass
    {
    /// <summary>MyProperty is a property in the MyClass class.</summary>
    /// <value>A string containing the text "MyProperty String".</value>
    public string MyProperty()
    {
    get
    {
    return "MyProperty String";
    }
    }

    }

    NDoc 可擴(kuò)展性
    MSDN, MSDN 2003 和 VS.NET 文檔引擎都支持一個(gè)可擴(kuò)展的模型,允許您定義自己專(zhuān)有的標(biāo)記,并指定它們?cè)诖a文檔中呈現(xiàn)的樣式。您或許已經(jīng)知道,這些文檔引擎都使用 XSLT 轉(zhuǎn)換,將 NDoc 中間 XML 數(shù)據(jù)文件轉(zhuǎn)換為目標(biāo) HTML 格式。NDoc 標(biāo)記的可擴(kuò)展性也依賴(lài)于此,您可以通過(guò)自定義的 XSLT 轉(zhuǎn)換文件加入您自定義的標(biāo)記。(建議,您需要事先了解一些 XSLT 轉(zhuǎn)換的知識(shí),并分析 XML 文檔引擎生成的 NDoc 中間 XML 數(shù)據(jù)文件中的 XML 格式,經(jīng)過(guò)足夠的測(cè)試,以調(diào)試您自己的擴(kuò)展 XSLT 轉(zhuǎn)換。)

    第一步,是在您的 C# 代碼中加入您的自定義標(biāo)記: (注意紅色的自定義標(biāo)記)

    [C#]
    /// <myTag>This is a custom tag</myTag>
    /// <summary>
    /// When processed by the VS.NET or MSDN documenters,
    /// using the stylesheet "extend-ndoc.xslt" as the ExtensibilityStylesheet
    /// property will result in end-user defined tags being displayed in the
    /// final help output topics
    /// </summary>
    /// <remarks>This is a test of an inline <null/> tag</remarks>
    public class ABunchOfCustomTags
    {
    }

    在編譯后生成的 /doc 文檔中,您可以找到這些自定義的標(biāo)記。

    接下來(lái),創(chuàng)建您的 XSLT 轉(zhuǎn)換模板,控制那些自定義標(biāo)記的輸出位置和樣式:

    <xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform xmlns:MSHelp="http://msdn.microsoft.com/mshelp">

    <xsl:template match="node()" mode="xml-data-island" priority="1">

    <MSHelp:Attr Name="TargetOS" Value="Windows"/>

    </xsl:template>

    <xsl:template match="ndoc" mode="header-section">

    <style type="text/css">

    .green

    {

    color:green;

    }

    </style>

    </xsl:template>
    <xsl:template match="myTag" mode="seealso-section">

    <h1 class="green">

    <xsl:value-of select="." mode="slashdoc"/>

    </h1>

    </xsl:template>

    <xsl:template match="null" mode="slashdoc">

    <xsl:text> null reference (Nothing in Visual Basic) </xsl:text>

    </xsl:template>

    </xsl:stylesheet>

    您應(yīng)該確認(rèn) XSLT 標(biāo)記的完整和語(yǔ)法的正確,注意 XSLT namespace 是必須的。

    如上面示例中看到的那樣,使用 stylesheet 中的 templates“匹配(match)”您的自定義標(biāo)記。match 是 XPath 查詢(xún)的一種,指示 template 將應(yīng)用于哪些標(biāo)記。簡(jiǎn)單的用法是直接匹配您的自定義標(biāo)記,當(dāng)然還可以有更高級(jí)的用法,對(duì) XSLT 高手們應(yīng)當(dāng)是小菜一碟。

    注意: 如果您定義的自定義標(biāo)記中還包含其他標(biāo)記,您應(yīng)當(dāng)加入下面的命令,讓它轉(zhuǎn)換這些內(nèi)含的標(biāo)記(比如 <see> 等):
    <xsl:apply-templates select="." mode="slashdoc"/>
    上例中還展示了向 HTML HEAD 頭部添加附加樣式定義的方法,即使用 mode 為 header-section 的 template。使用這種方法您可以覆蓋 NDoc 默認(rèn)的樣式或者添加附加的樣式表等。

    什么是 mode 呢?mode 用于指定該內(nèi)容將顯示于文檔的哪些區(qū)域。NDoc 擴(kuò)展的自定義標(biāo)記可以是以下兩類(lèi):

    Section 標(biāo)記 - 塊標(biāo)記,將顯示于文檔的某個(gè)區(qū)域。為 section 標(biāo)記編寫(xiě) template 時(shí),mode 必須是預(yù)定義的可用 Section 的列表中的一個(gè)。
    Inline 標(biāo)記 - 將和其他注釋文本夾雜在一起。為 inline 標(biāo)記編寫(xiě) template 時(shí),mode 必須是 "slashdoc"。
    如果您準(zhǔn)備編寫(xiě)匹配一些泛型 XPath 查詢(xún),如 node(), text(), *, 或 @*,您應(yīng)當(dāng)給該 template 指定一個(gè)名為 priority、值大于 0.5 的屬性,用您編寫(xiě)的 template 替換 NDoc 默認(rèn)的轉(zhuǎn)換模板。

    請(qǐng)注意: XSLT 是大小寫(xiě)敏感的,match 查詢(xún)模式,以及 mode 值都必須使用正確的大小寫(xiě),否則將被忽略。

    最后,為 MSDN 或 VS.NET 文檔引擎設(shè)置 ExtensibilityStylesheet 配置,指向您創(chuàng)作好的 XSLT 轉(zhuǎn)換文件。然后使用 NDoc 生成代碼文檔,您將看到已經(jīng)按照您編寫(xiě)的 template 規(guī)則執(zhí)行了相應(yīng)轉(zhuǎn)換。

    一張屏幕截圖:


    輸出示例

    可用 Section 的列表
    下面列出了所有可用 section 的清單,它們用于 NDoc 擴(kuò)展 XSLT 轉(zhuǎn)換模板中 mode 屬性的值,指示該標(biāo)記將顯示在代碼文檔中的區(qū)域。

    Section 名稱(chēng)說(shuō)明
    header-sectionHTML 的 HEAD 區(qū)域。可以使用此區(qū)域添加附加的樣式定義等。
    preliminary-section “預(yù)發(fā)布”警告區(qū)域。僅當(dāng)注釋文檔中使用 <preliminary> 標(biāo)記顯式標(biāo)出,或通過(guò)文檔引擎的 Preliminary 配置為 true 時(shí),才會(huì)顯示該區(qū)域。
    summary-section
    <summary> 標(biāo)記對(duì)應(yīng)的區(qū)域。tag.
    thread-safety-section “線(xiàn)程安全”區(qū)域。
    syntax-section “語(yǔ)法”區(qū)域。
    value-section <value> 標(biāo)記對(duì)應(yīng)的“屬性值”區(qū)域。
    parameter-section<param> 標(biāo)記對(duì)應(yīng)的“參數(shù)”區(qū)域。
    returnvalue-section<returns> 標(biāo)記對(duì)應(yīng)的“返回值”區(qū)域。
    implements-section “接口實(shí)現(xiàn)”區(qū)域。
    remarks-section<remarks> 標(biāo)記對(duì)應(yīng)的“備注”區(qū)域。
    after-remarks-section“備注”區(qū)域后的區(qū)域。
    注意: 不管“備注”區(qū)域是否存在,此區(qū)域總是存在的。
    obsolete-section “已過(guò)時(shí)”區(qū)域。
    events-section<event> 標(biāo)記對(duì)應(yīng)的“事件”區(qū)域。
    exceptions-section<exception> 標(biāo)記對(duì)應(yīng)的“異常”區(qū)域。
    example-section <example> 標(biāo)記對(duì)應(yīng)的“示例”區(qū)域。
    member-requirements-section(某一個(gè)成員的)“要求”區(qū)域。
    type-requirements-section (類(lèi)型的)“要求”區(qū)域。
    seealso-section “請(qǐng)參見(jiàn)”區(qū)域。
    enumeration-members-section “枚舉成員”區(qū)域。
    footer-row 頁(yè)腳區(qū)域。
    title-row頁(yè)眉區(qū)域。
    overloads-remarks-section 重載頁(yè)面的“備注”區(qū)域。
    overloads-example-section重載頁(yè)面的“示例”區(qū)域。
    overloads-summary-section重載頁(yè)面的“摘要”區(qū)域。
    xml-data-island HTML部嵌入的 XML 數(shù)據(jù)區(qū)域,可以附加自定義的元素或內(nèi)容。 僅對(duì) VS.NET 2003 文檔引擎有效。

    實(shí)現(xiàn)一個(gè)新的文檔引擎
     實(shí)現(xiàn)一個(gè)新的文檔引擎至少需要編寫(xiě)兩個(gè)類(lèi):

    一個(gè)從 NDoc.Core.DocumenterBase 繼承而來(lái)的類(lèi)

    一個(gè)從 NDoc.Core.DocumenterConfigBase 繼承而來(lái)的類(lèi)

    DocumenterConfigBase 是用于存儲(chǔ)文檔引擎配置信息的基類(lèi)。它已經(jīng)包含了一些通用的配置項(xiàng),這些通用配置主要用于配置 NDoc 中間 XML 數(shù)據(jù)文件的生成動(dòng)作。您編寫(xiě)的子類(lèi)可以添加所需要的特定配置項(xiàng)(比如生成的文檔保存在什么路徑下等)。

    DocumenterBase 是文檔引擎的基類(lèi)。文檔引擎的工作模式是,第一步生成 NDoc 中間 XML 數(shù)據(jù)文件,第二步由各文檔引擎將中間 XML 數(shù)據(jù)文件、分別轉(zhuǎn)換成所需的最終文檔格式。此基類(lèi)完成了第一步的工作,您編寫(xiě)的子類(lèi)只需完成第二個(gè)步驟。

    必須實(shí)現(xiàn)的成員包括 Clear, Build 方法以及 MainOutputFile 屬性等抽象(abstract)成員。

    實(shí)現(xiàn) Build 方法時(shí), 可以調(diào)用基類(lèi)的 MergeXML 方法,它完成第一步的 NDoc 中間 XML 數(shù)據(jù)文件的合并和制作。

    使用 XML 文檔引擎 可以導(dǎo)出一個(gè) NDoc 中間 XML 數(shù)據(jù)文件的樣例。您可以通過(guò)分析它,調(diào)試您的自定義轉(zhuǎn)換代碼或 XSLT 轉(zhuǎn)換定義。使用 UseNDocXmlFile 配置項(xiàng),可以節(jié)省您的調(diào)試時(shí)間。

    文檔引擎是如何加載的
     NDoc 通過(guò)反射發(fā)出(Reflection)機(jī)制動(dòng)態(tài)分析和加載文檔引擎。NDoc 啟動(dòng)時(shí),自動(dòng)檢查程序(NDocGui.exe 或 NDocConsole.exe)所在路徑中、所有以如下格式命名的程序集:

    NDoc.Documenter.<NAME>.dll

    其中 <NAME> 是文檔引擎的名稱(chēng)(注: 可能與界面中顯示的名稱(chēng)不同)。

    NDoc 從這些程序集中分析、嘗試查找 DocumenterBase 的子類(lèi),并加載找到的文檔引擎。

    為 NDoc 貢獻(xiàn)代碼
    您可以有很多種選擇,為 NDoc 的開(kāi)發(fā)做出有益的貢獻(xiàn)。

    • 加入 ndoc-users 郵件列表 是最簡(jiǎn)單的方式、和其他用戶(hù)分享您的使用心得體會(huì)和經(jīng)驗(yàn)。
    • 如果您發(fā)現(xiàn)了 bug,或者有一些不錯(cuò)的新功能建議,請(qǐng)使用 NDoc tracker database, 讓我們了解您的發(fā)現(xiàn)和想法。
    • 如果您有更多空閑的時(shí)間,希望成為 NDoc 開(kāi)發(fā)組的成員、和我們一起實(shí)現(xiàn)那些 new features 或者修復(fù)那些已知的 bugs,請(qǐng)通過(guò)NDoc SourceForge 站點(diǎn)聯(lián)絡(luò)項(xiàng)目的負(fù)責(zé)人、管理員,我們會(huì)幫助您開(kāi)始工作。我們歡迎越來(lái)越多的人們加入 NDoc 隊(duì)伍!
    • 感謝您使用 NDoc!

    NDoc 用戶(hù)郵件列表
     您也可以搜索 ndoc-users 郵件列表的存檔郵件,或者發(fā)送問(wèn)題到這個(gè)郵件列表。

    NDoc 跟蹤數(shù)據(jù)庫(kù)
     如果通過(guò)以上途徑還是沒(méi)有找到您要的答案,您可以嘗試 NDoc 在 SourceForge.net 維護(hù)的 Tracker database。

    • 提交一個(gè)支持請(qǐng)求(support request)
    • 提交 Bug 報(bào)告
    • 提交新功能建議

    介紹 NDoc 的文章
     網(wǎng)絡(luò)中還有很多不錯(cuò)的 NDoc 介紹文章,下面有些文章發(fā)布時(shí)間很早,有些鏈接已經(jīng)失效了。

    • [Documenting C# with XML comments], 作者 Ollie Cornes
    • [Using NDoc: Adding World-Class Documentation to Your .NET Components], 作者 Shawn Van Ness
    • [Fixing NDoc to emit links for Everett's MSDN docs], 作者 Shawn Van Ness
    • [Integrate NDoc HTML Help 2 in Visual Studio.NET], 作者 Fons Sonnemans
    • [Creating class documentation with NDoc], 作者 Rick Harris
    • [Integrating Help into Visual Studio.NET], 作者 Sune Trudslev?

    轉(zhuǎn)載于:https://www.cnblogs.com/friendwang1001/archive/2011/05/20/2051698.html

    總結(jié)

    以上是生活随笔為你收集整理的NDoc 用户指南(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    狠狠噜狠狠狠狠丁香五月 | 精品久久久无码中文字幕 | 国产人成高清在线视频99最全资源 | 国产精品二区一区二区aⅴ污介绍 | 精品久久久久久亚洲精品 | 18无码粉嫩小泬无套在线观看 | 国产小呦泬泬99精品 | 成人欧美一区二区三区 | 久久久久av无码免费网 | 欧美性生交xxxxx久久久 | 色婷婷av一区二区三区之红樱桃 | 中文精品久久久久人妻不卡 | 亚洲aⅴ无码成人网站国产app | 久久久久亚洲精品中文字幕 | 久久久成人毛片无码 | 强奷人妻日本中文字幕 | 好爽又高潮了毛片免费下载 | 国产激情无码一区二区 | www成人国产高清内射 | 亚洲高清偷拍一区二区三区 | 日韩精品乱码av一区二区 | 图片区 小说区 区 亚洲五月 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产激情综合五月久久 | 午夜精品一区二区三区在线观看 | 日本一卡二卡不卡视频查询 | 国产明星裸体无码xxxx视频 | 性做久久久久久久久 | 在线精品国产一区二区三区 | 日本免费一区二区三区最新 | 日本丰满护士爆乳xxxx | 久久99国产综合精品 | 日本www一道久久久免费榴莲 | 高清无码午夜福利视频 | 国产av一区二区三区最新精品 | 天天综合网天天综合色 | www国产亚洲精品久久网站 | 丰满少妇熟乱xxxxx视频 | 亚洲成a人片在线观看无码 | 国产成人无码区免费内射一片色欲 | 狠狠躁日日躁夜夜躁2020 | 夜精品a片一区二区三区无码白浆 | 一本久久伊人热热精品中文字幕 | 亚洲一区av无码专区在线观看 | 色婷婷av一区二区三区之红樱桃 | 国产成人无码专区 | 成在人线av无码免观看麻豆 | 99国产精品白浆在线观看免费 | 久久综合激激的五月天 | 精品熟女少妇av免费观看 | 亚洲日本va午夜在线电影 | 少妇性荡欲午夜性开放视频剧场 | 日韩av无码一区二区三区不卡 | 日韩精品a片一区二区三区妖精 | 亚洲中文字幕av在天堂 | 高清不卡一区二区三区 | 国产精品a成v人在线播放 | 亚洲中文字幕在线无码一区二区 | 久久 国产 尿 小便 嘘嘘 | 久久久久成人片免费观看蜜芽 | 永久免费精品精品永久-夜色 | 精品午夜福利在线观看 | 波多野结衣aⅴ在线 | 俄罗斯老熟妇色xxxx | 99久久亚洲精品无码毛片 | 成年美女黄网站色大免费视频 | 国产女主播喷水视频在线观看 | 精品久久综合1区2区3区激情 | 国产免费久久久久久无码 | 超碰97人人做人人爱少妇 | 亚洲乱码日产精品bd | 国产午夜福利100集发布 | 国内丰满熟女出轨videos | 成在人线av无码免观看麻豆 | 又大又紧又粉嫩18p少妇 | 黑人玩弄人妻中文在线 | 又黄又爽又色的视频 | 粗大的内捧猛烈进出视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 又粗又大又硬毛片免费看 | 丰满人妻一区二区三区免费视频 | 一本久道高清无码视频 | 国产手机在线αⅴ片无码观看 | 欧美性黑人极品hd | 国产精品久久久久无码av色戒 | 亚洲国产欧美日韩精品一区二区三区 | 在线欧美精品一区二区三区 | 中文字幕无码日韩欧毛 | 亚洲国产av美女网站 | 无码精品人妻一区二区三区av | 亚洲人成人无码网www国产 | 国产精品手机免费 | 免费人成在线观看网站 | 久久精品中文闷骚内射 | 国产无套内射久久久国产 | 88国产精品欧美一区二区三区 | 大地资源网第二页免费观看 | 亚洲国产精品成人久久蜜臀 | 精品一区二区不卡无码av | 亚洲一区二区三区国产精华液 | 国产成人精品一区二区在线小狼 | 国产成人精品必看 | 亚洲人成无码网www | 国产网红无码精品视频 | 国产成人精品无码播放 | 亚洲日韩一区二区 | 亚洲欧美日韩国产精品一区二区 | 国产电影无码午夜在线播放 | 久久国产36精品色熟妇 | 欧美激情一区二区三区成人 | 美女张开腿让人桶 | 亚洲欧洲无卡二区视頻 | 日本熟妇人妻xxxxx人hd | 女人被男人躁得好爽免费视频 | 亚洲熟妇自偷自拍另类 | 久久国产自偷自偷免费一区调 | 高清国产亚洲精品自在久久 | 中文毛片无遮挡高清免费 | 精品无人国产偷自产在线 | 99麻豆久久久国产精品免费 | 无码人妻丰满熟妇区五十路百度 | 99精品视频在线观看免费 | 自拍偷自拍亚洲精品被多人伦好爽 | 免费播放一区二区三区 | 国产女主播喷水视频在线观看 | 红桃av一区二区三区在线无码av | 伊人久久大香线焦av综合影院 | 亚洲大尺度无码无码专区 | 丰满人妻被黑人猛烈进入 | 国产手机在线αⅴ片无码观看 | 久久亚洲精品成人无码 | 成人欧美一区二区三区 | 国语自产偷拍精品视频偷 | 领导边摸边吃奶边做爽在线观看 | 国产手机在线αⅴ片无码观看 | 免费观看又污又黄的网站 | 大色综合色综合网站 | 亚洲人亚洲人成电影网站色 | 日本xxxx色视频在线观看免费 | 青春草在线视频免费观看 | 特级做a爰片毛片免费69 | 亚洲自偷自拍另类第1页 | 国产卡一卡二卡三 | 中文字幕人妻无码一夲道 | 丰满少妇熟乱xxxxx视频 | 欧美怡红院免费全部视频 | aⅴ在线视频男人的天堂 | 少妇性荡欲午夜性开放视频剧场 | 中文字幕亚洲情99在线 | 成人免费无码大片a毛片 | 久久精品视频在线看15 | 久久精品国产亚洲精品 | 国产办公室秘书无码精品99 | 夫妻免费无码v看片 | 国产精品久久久久无码av色戒 | 国产精品久免费的黄网站 | 老熟妇仑乱视频一区二区 | 未满小14洗澡无码视频网站 | 综合激情五月综合激情五月激情1 | 天堂在线观看www | 伊人久久大香线蕉av一区二区 | 日韩精品无码一本二本三本色 | 东京热男人av天堂 | 国产综合在线观看 | 久久久久久久人妻无码中文字幕爆 | www国产精品内射老师 | 国产suv精品一区二区五 | 黑森林福利视频导航 | 人妻少妇被猛烈进入中文字幕 | 精品久久久久香蕉网 | 东京热男人av天堂 | 亚洲中文字幕无码中文字在线 | 亚洲精品成人福利网站 | 国产无遮挡吃胸膜奶免费看 | 在线а√天堂中文官网 | 亚洲国产精品成人久久蜜臀 | 狂野欧美激情性xxxx | 丰满少妇人妻久久久久久 | 久久精品人妻少妇一区二区三区 | 动漫av网站免费观看 | 丰满少妇高潮惨叫视频 | 亚洲天堂2017无码中文 | 人妻少妇精品无码专区动漫 | 国产精品亚洲五月天高清 | 亚洲 另类 在线 欧美 制服 | 亚洲一区二区三区 | 波多野结衣av一区二区全免费观看 | 2020最新国产自产精品 | 国产精品va在线播放 | 亚洲国产日韩a在线播放 | 一本久久a久久精品亚洲 | 久久精品国产亚洲精品 | 人妻少妇被猛烈进入中文字幕 | 欧美丰满熟妇xxxx性ppx人交 | 55夜色66夜色国产精品视频 | 亚洲人亚洲人成电影网站色 | 97se亚洲精品一区 | 国产亚av手机在线观看 | 国产超级va在线观看视频 | 中文字幕乱码中文乱码51精品 | 亚洲色欲久久久综合网东京热 | 极品尤物被啪到呻吟喷水 | 亚洲日韩一区二区 | 国产艳妇av在线观看果冻传媒 | 久久久久久九九精品久 | 国产精品久久久久久久9999 | 精品国产一区二区三区四区在线看 | 亚洲色偷偷偷综合网 | 亚洲国产精品久久人人爱 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 樱花草在线社区www | 亚洲人成影院在线观看 | 国产精品久久久久久久影院 | 无遮无挡爽爽免费视频 | 欧美人与物videos另类 | 男女爱爱好爽视频免费看 | 欧美老人巨大xxxx做受 | 国产一区二区三区影院 | 日本熟妇浓毛 | 鲁大师影院在线观看 | 综合人妻久久一区二区精品 | 国产区女主播在线观看 | 少妇高潮喷潮久久久影院 | 日本精品少妇一区二区三区 | 日本高清一区免费中文视频 | 娇妻被黑人粗大高潮白浆 | 日韩精品乱码av一区二区 | 久久99精品久久久久久动态图 | 亚洲精品国产品国语在线观看 | 97夜夜澡人人双人人人喊 | 国产成人无码区免费内射一片色欲 | 男女爱爱好爽视频免费看 | 高清国产亚洲精品自在久久 | 精品国产青草久久久久福利 | 亚洲无人区一区二区三区 | 精品国产成人一区二区三区 | 两性色午夜免费视频 | 天堂久久天堂av色综合 | 综合人妻久久一区二区精品 | 亚洲精品中文字幕 | 欧美人与物videos另类 | 亚洲一区二区观看播放 | 精品国偷自产在线视频 | 欧美日韩一区二区三区自拍 | 中文字幕无码乱人伦 | 青草青草久热国产精品 | 久久精品成人欧美大片 | 麻豆果冻传媒2021精品传媒一区下载 | 伊人久久大香线蕉av一区二区 | 最近免费中文字幕中文高清百度 | 久久视频在线观看精品 | 野狼第一精品社区 | 亚洲国产一区二区三区在线观看 | 人人妻人人澡人人爽欧美一区九九 | 亚洲 日韩 欧美 成人 在线观看 | 成年美女黄网站色大免费视频 | 日韩av激情在线观看 | 亚洲欧美日韩国产精品一区二区 | 久久久久成人精品免费播放动漫 | 天堂无码人妻精品一区二区三区 | 一本大道久久东京热无码av | 久久亚洲中文字幕精品一区 | 久久亚洲中文字幕精品一区 | 少妇性l交大片欧洲热妇乱xxx | 欧美老妇交乱视频在线观看 | 久久久久亚洲精品男人的天堂 | 久久精品99久久香蕉国产色戒 | 国产精品久久久久久久影院 | 狠狠躁日日躁夜夜躁2020 | 成人无码视频免费播放 | 亚洲午夜无码久久 | 国产高清不卡无码视频 | 亚洲精品成人av在线 | 日本熟妇人妻xxxxx人hd | 人人妻人人藻人人爽欧美一区 | 真人与拘做受免费视频 | 国产内射老熟女aaaa | 精品国产av色一区二区深夜久久 | 自拍偷自拍亚洲精品10p | 欧美日韩综合一区二区三区 | 色窝窝无码一区二区三区色欲 | 男女猛烈xx00免费视频试看 | 国内精品久久久久久中文字幕 | www国产精品内射老师 | 中文久久乱码一区二区 | 色欲av亚洲一区无码少妇 | 嫩b人妻精品一区二区三区 | 在线播放免费人成毛片乱码 | 图片区 小说区 区 亚洲五月 | 国产精品久久久久久无码 | 日韩欧美中文字幕在线三区 | 成人免费视频在线观看 | 欧美精品一区二区精品久久 | 香蕉久久久久久av成人 | 女人高潮内射99精品 | 最近中文2019字幕第二页 | 国产精品第一区揄拍无码 | 国产av一区二区精品久久凹凸 | а√资源新版在线天堂 | 久久久精品456亚洲影院 | 在线看片无码永久免费视频 | 日本熟妇大屁股人妻 | 国模大胆一区二区三区 | 欧美人妻一区二区三区 | 国产成人综合在线女婷五月99播放 | 人人超人人超碰超国产 | 欧美老妇交乱视频在线观看 | 黄网在线观看免费网站 | 天干天干啦夜天干天2017 | 久久人人97超碰a片精品 | 精品 日韩 国产 欧美 视频 | 亚洲色大成网站www国产 | 欧美人与禽zoz0性伦交 | 亚洲一区二区三区偷拍女厕 | 久久国产精品萌白酱免费 | 日本一本二本三区免费 | 无码国模国产在线观看 | 国产午夜视频在线观看 | 在线精品亚洲一区二区 | 国产真实乱对白精彩久久 | 久久99久久99精品中文字幕 | 中文字幕+乱码+中文字幕一区 | 清纯唯美经典一区二区 | 日本熟妇浓毛 | 亚洲成色www久久网站 | 国产又爽又黄又刺激的视频 | 久久99久久99精品中文字幕 | 97无码免费人妻超级碰碰夜夜 | 亚洲 欧美 激情 小说 另类 | 久久精品国产精品国产精品污 | 久久久亚洲欧洲日产国码αv | 久久www免费人成人片 | 亚洲狠狠婷婷综合久久 | 一本久久伊人热热精品中文字幕 | 色一情一乱一伦一区二区三欧美 | 麻豆果冻传媒2021精品传媒一区下载 | 色欲人妻aaaaaaa无码 | 精品无码国产一区二区三区av | 无码人妻丰满熟妇区五十路百度 | 亚洲午夜无码久久 | 少妇被黑人到高潮喷出白浆 | 熟女少妇人妻中文字幕 | 国精品人妻无码一区二区三区蜜柚 | 扒开双腿吃奶呻吟做受视频 | 国产精品久久久久久久9999 | 永久免费观看美女裸体的网站 | 欧美熟妇另类久久久久久不卡 | 国产午夜手机精彩视频 | 欧美老妇交乱视频在线观看 | 日韩 欧美 动漫 国产 制服 | 色欲久久久天天天综合网精品 | 无码乱肉视频免费大全合集 | 一本久久a久久精品vr综合 | v一区无码内射国产 | 国产成人精品无码播放 | 亚洲乱码国产乱码精品精 | 中文字幕无码日韩专区 | 国产亚洲精品久久久ai换 | 成人av无码一区二区三区 | 免费无码av一区二区 | 精品成人av一区二区三区 | 正在播放老肥熟妇露脸 | 动漫av一区二区在线观看 | 黑人巨大精品欧美黑寡妇 | 国产人妻人伦精品1国产丝袜 | 精品熟女少妇av免费观看 | 亚洲色www成人永久网址 | 国产激情一区二区三区 | 老熟妇仑乱视频一区二区 | 国内精品久久久久久中文字幕 | 欧美人与物videos另类 | 久久五月精品中文字幕 | 久久视频在线观看精品 | 国产精品美女久久久久av爽李琼 | 亚洲一区av无码专区在线观看 | 东北女人啪啪对白 | 久久久久99精品国产片 | 99久久亚洲精品无码毛片 | 国产亚洲精品久久久久久久 | 欧美亚洲国产一区二区三区 | 国内丰满熟女出轨videos | 在线观看免费人成视频 | 国产精品香蕉在线观看 | 高潮毛片无遮挡高清免费 | 亚洲国产成人av在线观看 | 国产午夜福利亚洲第一 | 日韩精品一区二区av在线 | 4hu四虎永久在线观看 | 天天综合网天天综合色 | 日日摸日日碰夜夜爽av | 国产精品自产拍在线观看 | 永久免费观看美女裸体的网站 | 久久99热只有频精品8 | 无码人妻出轨黑人中文字幕 | 亚洲区欧美区综合区自拍区 | 国产精品亚洲综合色区韩国 | 少妇性l交大片 | 国产人成高清在线视频99最全资源 | 国产精品久久久久久亚洲毛片 | 亚洲狠狠色丁香婷婷综合 | 欧美高清在线精品一区 | 无码国产乱人伦偷精品视频 | 免费视频欧美无人区码 | 国产精品对白交换视频 | 欧美日韩视频无码一区二区三 | 狠狠cao日日穞夜夜穞av | 亚洲日本va中文字幕 | 国产手机在线αⅴ片无码观看 | 日韩精品无码一区二区中文字幕 | 欧美精品一区二区精品久久 | 国产精品久久久久久亚洲影视内衣 | 丰满岳乱妇在线观看中字无码 | 日本精品久久久久中文字幕 | 国产午夜福利100集发布 | 国模大胆一区二区三区 | 露脸叫床粗话东北少妇 | 熟女少妇人妻中文字幕 | 3d动漫精品啪啪一区二区中 | 好男人www社区 | 久久精品国产一区二区三区肥胖 | 国产真实伦对白全集 | 亚洲欧美精品aaaaaa片 | 日日夜夜撸啊撸 | 亚洲精品一区二区三区大桥未久 | 中文字幕人成乱码熟女app | 日本xxxx色视频在线观看免费 | 久久午夜无码鲁丝片午夜精品 | 少妇性荡欲午夜性开放视频剧场 | 亚洲人成影院在线观看 | 欧美阿v高清资源不卡在线播放 | 中文字幕无码av波多野吉衣 | 无码av中文字幕免费放 | 美女张开腿让人桶 | 日日干夜夜干 | 久久久久久久人妻无码中文字幕爆 | 3d动漫精品啪啪一区二区中 | 中文字幕无码免费久久9一区9 | 丝袜足控一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲天堂2017无码中文 | 国产精品二区一区二区aⅴ污介绍 | 欧美野外疯狂做受xxxx高潮 | 亚洲第一网站男人都懂 | 爱做久久久久久 | 国产av人人夜夜澡人人爽麻豆 | 少妇性荡欲午夜性开放视频剧场 | 曰本女人与公拘交酡免费视频 | 亚洲综合无码久久精品综合 | 欧洲vodafone精品性 | 宝宝好涨水快流出来免费视频 | 97人妻精品一区二区三区 | 国产色xx群视频射精 | 国产熟妇高潮叫床视频播放 | 日本精品久久久久中文字幕 | 国产精品亚洲专区无码不卡 | 成人性做爰aaa片免费看不忠 | 妺妺窝人体色www婷婷 | 欧美老熟妇乱xxxxx | 亚洲乱码中文字幕在线 | 动漫av网站免费观看 | 欧美 亚洲 国产 另类 | 亚洲熟熟妇xxxx | 人妻尝试又大又粗久久 | 99久久人妻精品免费二区 | 免费人成网站视频在线观看 | 少妇人妻偷人精品无码视频 | 久久久久国色av免费观看性色 | 俺去俺来也在线www色官网 | 黑人玩弄人妻中文在线 | 青青久在线视频免费观看 | 少妇太爽了在线观看 | 欧美人与禽猛交狂配 | 在线精品国产一区二区三区 | 中文字幕无码av激情不卡 | 无码精品人妻一区二区三区av | 久久亚洲精品成人无码 | 国产热a欧美热a在线视频 | 国产亚洲tv在线观看 | 久久综合给合久久狠狠狠97色 | 精品一区二区三区波多野结衣 | 曰韩少妇内射免费播放 | 人人妻人人澡人人爽精品欧美 | 无码一区二区三区在线 | 午夜精品久久久内射近拍高清 | 无码精品人妻一区二区三区av | 国产精品二区一区二区aⅴ污介绍 | 麻豆成人精品国产免费 | 亚洲国产欧美在线成人 | 中文字幕无码免费久久9一区9 | 久久精品人妻少妇一区二区三区 | 人妻中文无码久热丝袜 | 波多野42部无码喷潮在线 | 亚洲中文字幕乱码av波多ji | 青青久在线视频免费观看 | 狠狠亚洲超碰狼人久久 | 亚洲色在线无码国产精品不卡 | 国产成人无码一二三区视频 | 国产精品毛片一区二区 | 97人妻精品一区二区三区 | 76少妇精品导航 | 亚洲国产成人a精品不卡在线 | 日韩亚洲欧美中文高清在线 | 色老头在线一区二区三区 | 四虎国产精品免费久久 | 国产免费观看黄av片 | 国产特级毛片aaaaaaa高清 | a在线亚洲男人的天堂 | 亚洲国产av精品一区二区蜜芽 | 国产成人无码一二三区视频 | 亚洲熟女一区二区三区 | 又大又黄又粗又爽的免费视频 | 98国产精品综合一区二区三区 | 精品国产一区二区三区四区在线看 | 亚洲成av人综合在线观看 | 久久精品国产99精品亚洲 | 国产精品亚洲一区二区三区喷水 | 午夜精品一区二区三区在线观看 | 对白脏话肉麻粗话av | 日日噜噜噜噜夜夜爽亚洲精品 | 两性色午夜免费视频 | 亚洲色大成网站www国产 | 日本一卡二卡不卡视频查询 | 女人被男人躁得好爽免费视频 | 久久97精品久久久久久久不卡 | 国产精华av午夜在线观看 | 亚洲国产精品成人久久蜜臀 | 牲欲强的熟妇农村老妇女 | 亚洲s码欧洲m码国产av | 老太婆性杂交欧美肥老太 | 2020久久香蕉国产线看观看 | 日日夜夜撸啊撸 | 草草网站影院白丝内射 | 麻豆人妻少妇精品无码专区 | 久久综合香蕉国产蜜臀av | 台湾无码一区二区 | 国产精品久久久久久无码 | 亚洲精品一区二区三区婷婷月 | 亚洲成a人片在线观看无码3d | 欧美日韩人成综合在线播放 | 国产成人久久精品流白浆 | 无码人妻少妇伦在线电影 | 国产熟妇另类久久久久 | 色欲av亚洲一区无码少妇 | 人人超人人超碰超国产 | 日韩精品a片一区二区三区妖精 | 久久婷婷五月综合色国产香蕉 | 亚洲毛片av日韩av无码 | 日日天干夜夜狠狠爱 | 国产真实伦对白全集 | 色爱情人网站 | 亚洲 a v无 码免 费 成 人 a v | 日韩人妻少妇一区二区三区 | 国产女主播喷水视频在线观看 | 久久久久久久久蜜桃 | 精品无码国产一区二区三区av | 无码一区二区三区在线 | 久久精品丝袜高跟鞋 | 亚洲无人区午夜福利码高清完整版 | 亚洲成av人影院在线观看 | 欧美怡红院免费全部视频 | 红桃av一区二区三区在线无码av | 国内精品久久久久久中文字幕 | 高清国产亚洲精品自在久久 | 亚洲の无码国产の无码影院 | 成人一在线视频日韩国产 | 国产成人一区二区三区别 | 亚洲熟妇色xxxxx欧美老妇 | 国产乡下妇女做爰 | 少妇性l交大片欧洲热妇乱xxx | 国产成人综合色在线观看网站 | 欧美兽交xxxx×视频 | 精品国偷自产在线视频 | 精品一二三区久久aaa片 | 精品人妻人人做人人爽夜夜爽 | 色窝窝无码一区二区三区色欲 | 成人试看120秒体验区 | 国产精品久久久久久亚洲影视内衣 | 亚洲综合无码久久精品综合 | 欧美激情内射喷水高潮 | 精品无人国产偷自产在线 | 日韩av激情在线观看 | 国产精品国产三级国产专播 | 狂野欧美激情性xxxx | 亚洲精品午夜国产va久久成人 | 午夜福利一区二区三区在线观看 | 国产人妻精品午夜福利免费 | 亚洲国产精品美女久久久久 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲精品欧美二区三区中文字幕 | 免费视频欧美无人区码 | 亚洲午夜久久久影院 | 免费无码午夜福利片69 | 青青青手机频在线观看 | 奇米影视7777久久精品人人爽 | 亚洲呦女专区 | 亚洲爆乳大丰满无码专区 | 99久久精品国产一区二区蜜芽 | 欧美丰满熟妇xxxx性ppx人交 | 色五月丁香五月综合五月 | 亚洲日韩av一区二区三区四区 | 我要看www免费看插插视频 | 国产亚洲精品久久久久久久 | 国产亚洲精品久久久久久久 | 国产亲子乱弄免费视频 | 久久精品人人做人人综合试看 | 国产乱人伦av在线无码 | 亚洲高清偷拍一区二区三区 | 亚洲一区二区三区四区 | 丰满妇女强制高潮18xxxx | 1000部夫妻午夜免费 | 免费国产成人高清在线观看网站 | 国产综合在线观看 | 色一情一乱一伦一视频免费看 | 美女张开腿让人桶 | 亚洲成av人在线观看网址 | 在线亚洲高清揄拍自拍一品区 | 无码人妻精品一区二区三区不卡 | 2019nv天堂香蕉在线观看 | 欧美老妇交乱视频在线观看 | 国产两女互慰高潮视频在线观看 | 亚洲第一网站男人都懂 | 亚洲男人av天堂午夜在 | 久久综合给久久狠狠97色 | 丰满护士巨好爽好大乳 | 国产乱子伦视频在线播放 | 国语精品一区二区三区 | 5858s亚洲色大成网站www | 欧美激情一区二区三区成人 | 亚洲成熟女人毛毛耸耸多 | 国产精品毛片一区二区 | 欧美黑人巨大xxxxx | 中文久久乱码一区二区 | 伊在人天堂亚洲香蕉精品区 | 久久午夜无码鲁丝片秋霞 | 欧美性生交活xxxxxdddd | 综合网日日天干夜夜久久 | 天堂亚洲2017在线观看 | 一二三四社区在线中文视频 | 成人无码精品一区二区三区 | 人人澡人摸人人添 | 久久精品国产精品国产精品污 | 天天拍夜夜添久久精品 | 国产精品欧美成人 | 欧美丰满熟妇xxxx性ppx人交 | 国产人妻大战黑人第1集 | 亚洲欧美日韩综合久久久 | 亚洲国产高清在线观看视频 | 久久国产精品萌白酱免费 | 国产免费久久精品国产传媒 | 又粗又大又硬又长又爽 | 亚洲精品国偷拍自产在线麻豆 | 天干天干啦夜天干天2017 | 国产精品爱久久久久久久 | 无码av中文字幕免费放 | 精品久久久久久亚洲精品 | 国产内射爽爽大片视频社区在线 | 日韩精品无码一区二区中文字幕 | 精品一区二区三区波多野结衣 | 精品久久久久久人妻无码中文字幕 | 欧美日韩在线亚洲综合国产人 | 国内精品人妻无码久久久影院 | 亚洲精品综合五月久久小说 | 久久久久99精品国产片 | 少妇性俱乐部纵欲狂欢电影 | 免费男性肉肉影院 | 麻豆成人精品国产免费 | 成人欧美一区二区三区黑人免费 | 亚洲色无码一区二区三区 | 日本护士xxxxhd少妇 | 亚洲精品欧美二区三区中文字幕 | 国产精品国产三级国产专播 | 色老头在线一区二区三区 | 色综合久久久久综合一本到桃花网 | 国产又爽又黄又刺激的视频 | 98国产精品综合一区二区三区 | 亚洲理论电影在线观看 | 午夜成人1000部免费视频 | 乱人伦人妻中文字幕无码久久网 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产国语老龄妇女a片 | 在线精品国产一区二区三区 | 青春草在线视频免费观看 | 无套内谢的新婚少妇国语播放 | 狂野欧美性猛交免费视频 | 免费网站看v片在线18禁无码 | 亚洲国产欧美日韩精品一区二区三区 | 免费无码一区二区三区蜜桃大 | 国产麻豆精品一区二区三区v视界 | 久久久精品456亚洲影院 | 国产人妖乱国产精品人妖 | 国产精品va在线观看无码 | 久久久精品国产sm最大网站 | 极品尤物被啪到呻吟喷水 | 熟女俱乐部五十路六十路av | 欧洲vodafone精品性 | 欧美人妻一区二区三区 | 亚洲一区二区三区国产精华液 | 国产办公室秘书无码精品99 | 少妇性俱乐部纵欲狂欢电影 | 色一情一乱一伦一视频免费看 | 精品日本一区二区三区在线观看 | 国产69精品久久久久app下载 | 中文精品无码中文字幕无码专区 | 国产乱子伦视频在线播放 | 真人与拘做受免费视频 | 亚洲狠狠婷婷综合久久 | 国产午夜精品一区二区三区嫩草 | 精品国产aⅴ无码一区二区 | 精品亚洲韩国一区二区三区 | 性欧美videos高清精品 | 欧美zoozzooz性欧美 | 久久www免费人成人片 | 一本久道久久综合婷婷五月 | 在线播放亚洲第一字幕 | 99久久99久久免费精品蜜桃 | 欧美老熟妇乱xxxxx | 国产口爆吞精在线视频 | 日韩精品一区二区av在线 | 国产精品无码永久免费888 | 一本加勒比波多野结衣 | 国产乱码精品一品二品 | 一本无码人妻在中文字幕免费 | 亚洲成色在线综合网站 | 精品乱码久久久久久久 | 国内综合精品午夜久久资源 | 又粗又大又硬毛片免费看 | 色综合久久88色综合天天 | 国产精品永久免费视频 | 亚洲成av人综合在线观看 | 亚洲国产av美女网站 | 夜夜高潮次次欢爽av女 | 97精品国产97久久久久久免费 | 亚洲精品一区二区三区四区五区 | 久久亚洲a片com人成 | 国产97人人超碰caoprom | 内射后入在线观看一区 | 日本精品久久久久中文字幕 | 色老头在线一区二区三区 | 青青草原综合久久大伊人精品 | 中文字幕av伊人av无码av | 国产av一区二区三区最新精品 | 久久午夜夜伦鲁鲁片无码免费 | 久久精品国产一区二区三区 | a在线观看免费网站大全 | 亚洲精品久久久久久一区二区 | 国模大胆一区二区三区 | 色欲久久久天天天综合网精品 | 国产内射老熟女aaaa | 国产人成高清在线视频99最全资源 | 成人动漫在线观看 | 玩弄人妻少妇500系列视频 | 亚洲 a v无 码免 费 成 人 a v | 久久久久久九九精品久 | 1000部啪啪未满十八勿入下载 | 日日干夜夜干 | 白嫩日本少妇做爰 | 精品夜夜澡人妻无码av蜜桃 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 色妞www精品免费视频 | 纯爱无遮挡h肉动漫在线播放 | 99久久精品无码一区二区毛片 | 日本丰满熟妇videos | 国产艳妇av在线观看果冻传媒 | 亚洲一区二区三区国产精华液 | 又粗又大又硬毛片免费看 | 亚洲a无码综合a国产av中文 | 高清无码午夜福利视频 | 欧美激情综合亚洲一二区 | 亚洲综合伊人久久大杳蕉 | 日本www一道久久久免费榴莲 | 国产成人无码区免费内射一片色欲 | 人妻与老人中文字幕 | 久久国产精品偷任你爽任你 | 九九综合va免费看 | 丰腴饱满的极品熟妇 | 国产内射爽爽大片视频社区在线 | 亚洲日韩av一区二区三区四区 | 夜精品a片一区二区三区无码白浆 | 国产va免费精品观看 | 国产亚洲视频中文字幕97精品 | 激情内射亚州一区二区三区爱妻 | 少妇性俱乐部纵欲狂欢电影 | 精品国产一区av天美传媒 | 无码av最新清无码专区吞精 | 亚洲大尺度无码无码专区 | 中文字幕无线码免费人妻 | 国产午夜手机精彩视频 | 国产成人av免费观看 | 无码人中文字幕 | 亚洲中文字幕久久无码 | 欧美老妇交乱视频在线观看 | 波多野结衣一区二区三区av免费 | 日韩人妻无码中文字幕视频 | 久久久久国色av免费观看性色 | 亚洲人成无码网www | 国产色精品久久人妻 | 人妻夜夜爽天天爽三区 | 久久久www成人免费毛片 | 色综合久久中文娱乐网 | 欧美日韩在线亚洲综合国产人 | 伦伦影院午夜理论片 | 网友自拍区视频精品 | 久久无码人妻影院 | 国产精品亚洲lv粉色 | 国产av久久久久精东av | 欧美人与禽猛交狂配 | 免费播放一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | av无码久久久久不卡免费网站 | 国产精华av午夜在线观看 | 99视频精品全部免费免费观看 | av无码不卡在线观看免费 | 欧美精品无码一区二区三区 | 中文字幕av伊人av无码av | 性欧美疯狂xxxxbbbb | 久久久久久久久蜜桃 | 国产亚洲精品久久久闺蜜 | 美女极度色诱视频国产 | 日韩少妇白浆无码系列 | 国产亚洲视频中文字幕97精品 | 疯狂三人交性欧美 | 国产精品香蕉在线观看 | 爆乳一区二区三区无码 | 最新国产乱人伦偷精品免费网站 | 欧美一区二区三区 | 亚洲欧洲日本无在线码 | 无码人妻av免费一区二区三区 | 婷婷丁香五月天综合东京热 | 国产亚洲人成在线播放 | 国产亚洲人成在线播放 | 娇妻被黑人粗大高潮白浆 | 夜精品a片一区二区三区无码白浆 | 国产真实伦对白全集 | 激情内射亚州一区二区三区爱妻 | 国产精品对白交换视频 | 欧美亚洲国产一区二区三区 | 99riav国产精品视频 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲熟悉妇女xxx妇女av | 亚洲人成影院在线观看 | 熟女体下毛毛黑森林 | 任你躁国产自任一区二区三区 | 成人无码影片精品久久久 | 亚无码乱人伦一区二区 | 欧美日韩一区二区综合 | 亚洲性无码av中文字幕 | 99久久久无码国产精品免费 | 亚洲色欲久久久综合网东京热 | 18无码粉嫩小泬无套在线观看 | 熟妇激情内射com | 国产va免费精品观看 | 久久五月精品中文字幕 | 一本色道婷婷久久欧美 | 激情五月综合色婷婷一区二区 | 欧美日韩人成综合在线播放 | 国产成人精品无码播放 | 亚洲gv猛男gv无码男同 | 中文字幕乱码人妻无码久久 | 又紧又大又爽精品一区二区 | a在线观看免费网站大全 | 少女韩国电视剧在线观看完整 | 久久久久成人片免费观看蜜芽 | 国产九九九九九九九a片 | 亚洲 a v无 码免 费 成 人 a v | 一二三四在线观看免费视频 | 男女猛烈xx00免费视频试看 | 东京一本一道一二三区 | 伊在人天堂亚洲香蕉精品区 | 亚洲 日韩 欧美 成人 在线观看 | 欧美精品无码一区二区三区 | 亚洲の无码国产の无码影院 | 88国产精品欧美一区二区三区 | 中国女人内谢69xxxxxa片 | 亚洲欧美综合区丁香五月小说 | 白嫩日本少妇做爰 | 撕开奶罩揉吮奶头视频 | 国产在线一区二区三区四区五区 | 亚洲毛片av日韩av无码 | 午夜不卡av免费 一本久久a久久精品vr综合 | 免费无码一区二区三区蜜桃大 | 欧美阿v高清资源不卡在线播放 | 国产成人无码av一区二区 | 奇米影视7777久久精品人人爽 | 日欧一片内射va在线影院 | 蜜桃臀无码内射一区二区三区 | 真人与拘做受免费视频 | 国产av无码专区亚洲a∨毛片 | 少妇被粗大的猛进出69影院 | 真人与拘做受免费视频 | 精品水蜜桃久久久久久久 | 国产色精品久久人妻 | 国内少妇偷人精品视频免费 | 又色又爽又黄的美女裸体网站 | 国产成人精品无码播放 | 国产片av国语在线观看 | 最近免费中文字幕中文高清百度 | 免费观看黄网站 | 成人无码精品1区2区3区免费看 | 久久天天躁狠狠躁夜夜免费观看 | 人妻插b视频一区二区三区 | 中文字幕人妻无码一区二区三区 | 人人超人人超碰超国产 | 国产情侣作爱视频免费观看 | 嫩b人妻精品一区二区三区 | 亚洲中文字幕av在天堂 | 4hu四虎永久在线观看 | 熟女俱乐部五十路六十路av | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 少妇无码av无码专区在线观看 | 亚洲熟妇色xxxxx亚洲 | 欧美老人巨大xxxx做受 | 亚洲欧美中文字幕5发布 | 国内精品人妻无码久久久影院蜜桃 | 国产婷婷色一区二区三区在线 | 激情亚洲一区国产精品 | 精品欧美一区二区三区久久久 | 国产人妻人伦精品 | 亚洲经典千人经典日产 | 中文字幕无码免费久久99 | 亚洲精品国产精品乱码视色 | 国产97在线 | 亚洲 | 中文毛片无遮挡高清免费 | 国产美女极度色诱视频www | 日日碰狠狠躁久久躁蜜桃 | 亚洲人成网站色7799 | 无人区乱码一区二区三区 | 亚洲国产精品无码久久久久高潮 | 特大黑人娇小亚洲女 | 一个人看的www免费视频在线观看 | 日产精品99久久久久久 | 国产婷婷色一区二区三区在线 | 国产成人无码一二三区视频 | 极品尤物被啪到呻吟喷水 | 粉嫩少妇内射浓精videos | 蜜桃视频插满18在线观看 | 成人片黄网站色大片免费观看 | 亚洲精品一区二区三区婷婷月 | 无码午夜成人1000部免费视频 | 亚洲精品成人av在线 | 国产一区二区三区影院 | 人妻aⅴ无码一区二区三区 | 国产一区二区不卡老阿姨 | 男女超爽视频免费播放 | 欧美性猛交内射兽交老熟妇 | 波多野结衣av一区二区全免费观看 | 日本成熟视频免费视频 | 久久久成人毛片无码 | 中文字幕无码日韩专区 | 久久久久久a亚洲欧洲av冫 | 成人影院yy111111在线观看 | 亚洲日韩一区二区三区 | 精品久久久无码中文字幕 | 中文无码精品a∨在线观看不卡 | 成人无码视频在线观看网站 | 99久久精品无码一区二区毛片 | 人妻人人添人妻人人爱 | 在线天堂新版最新版在线8 | 国产精品无码mv在线观看 | 狠狠cao日日穞夜夜穞av | 亚洲天堂2017无码中文 | 天干天干啦夜天干天2017 | 亚洲欧美精品aaaaaa片 | 国产精品无码永久免费888 | 日本在线高清不卡免费播放 | 中文字幕乱码亚洲无线三区 | 国产亚洲精品精品国产亚洲综合 | 久久午夜无码鲁丝片秋霞 | 大屁股大乳丰满人妻 | 国产综合在线观看 | 国产婷婷色一区二区三区在线 | 精品欧洲av无码一区二区三区 | 免费看男女做好爽好硬视频 | 丰满少妇熟乱xxxxx视频 | 欧美高清在线精品一区 | 色综合久久88色综合天天 | 国产97人人超碰caoprom | 久久午夜无码鲁丝片秋霞 | 国产人妻人伦精品 | 色妞www精品免费视频 | 色欲人妻aaaaaaa无码 | 国产精品久久国产精品99 | 黄网在线观看免费网站 | 亚洲自偷自拍另类第1页 | 欧美激情综合亚洲一二区 | 99久久婷婷国产综合精品青草免费 | 亚洲乱亚洲乱妇50p | 久久久久亚洲精品中文字幕 | 99久久精品国产一区二区蜜芽 | 欧美 日韩 人妻 高清 中文 | 亚洲人成影院在线无码按摩店 | 兔费看少妇性l交大片免费 | 亚洲中文字幕无码中字 | 日韩精品一区二区av在线 | 人人澡人人妻人人爽人人蜜桃 | 无码吃奶揉捏奶头高潮视频 | 亚洲精品国偷拍自产在线麻豆 | 欧美一区二区三区视频在线观看 | 强开小婷嫩苞又嫩又紧视频 | 欧美真人作爱免费视频 | 国产乱人偷精品人妻a片 | 久久婷婷五月综合色国产香蕉 | 日本免费一区二区三区最新 | 精品 日韩 国产 欧美 视频 | 亚洲成a人一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲精品美女久久久久久久 | 波多野结衣av在线观看 | 伊在人天堂亚洲香蕉精品区 | 四虎国产精品免费久久 | 无遮无挡爽爽免费视频 | av无码久久久久不卡免费网站 | 无码人妻精品一区二区三区不卡 | 丰满少妇人妻久久久久久 | 久久精品一区二区三区四区 | 乱中年女人伦av三区 | 亚洲欧洲无卡二区视頻 | 老司机亚洲精品影院无码 | 免费看男女做好爽好硬视频 | 国产人妻人伦精品 | 无码国内精品人妻少妇 | 亚欧洲精品在线视频免费观看 | 成人影院yy111111在线观看 | 欧美午夜特黄aaaaaa片 | 99久久精品国产一区二区蜜芽 | 国产亚洲精品久久久ai换 | 成人无码精品一区二区三区 | 日韩视频 中文字幕 视频一区 | 亚洲国产精品一区二区美利坚 | 国产97在线 | 亚洲 | 男人扒开女人内裤强吻桶进去 | 国产两女互慰高潮视频在线观看 | 亚洲乱码中文字幕在线 | 国产97人人超碰caoprom | 乱码午夜-极国产极内射 | 亚洲精品一区三区三区在线观看 | 一二三四在线观看免费视频 | 激情内射亚州一区二区三区爱妻 | 亚洲精品成a人在线观看 | 美女扒开屁股让男人桶 | 色综合天天综合狠狠爱 | 精品无码一区二区三区爱欲 | 欧美猛少妇色xxxxx | 亚洲の无码国产の无码影院 | 久久综合久久自在自线精品自 | 亚洲日本在线电影 | 久9re热视频这里只有精品 | 一本久久a久久精品亚洲 | 日本免费一区二区三区最新 | 秋霞特色aa大片 | 国产网红无码精品视频 | 377p欧洲日本亚洲大胆 | 无码播放一区二区三区 | 久久亚洲精品成人无码 | 夜夜躁日日躁狠狠久久av | 帮老师解开蕾丝奶罩吸乳网站 | 国产偷抇久久精品a片69 | 久久久久99精品成人片 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产肉丝袜在线观看 | 亚洲阿v天堂在线 | 亚洲综合久久一区二区 | 成年美女黄网站色大免费全看 | aⅴ在线视频男人的天堂 | 日韩 欧美 动漫 国产 制服 | 国产情侣作爱视频免费观看 | 少妇无套内谢久久久久 | 国产性生交xxxxx无码 | 国产精品美女久久久网av | 国产免费观看黄av片 | 大屁股大乳丰满人妻 | 亚洲精品国偷拍自产在线观看蜜桃 | 色综合天天综合狠狠爱 | 欧美阿v高清资源不卡在线播放 | 人妻插b视频一区二区三区 | 欧美喷潮久久久xxxxx | 午夜熟女插插xx免费视频 | 日日摸日日碰夜夜爽av | 丰满少妇熟乱xxxxx视频 | 午夜男女很黄的视频 | 少妇的肉体aa片免费 | 美女极度色诱视频国产 | 成在人线av无码免观看麻豆 | 久久久中文久久久无码 | 欧美性生交活xxxxxdddd | 成人精品一区二区三区中文字幕 | 99久久精品国产一区二区蜜芽 | 人人妻人人澡人人爽人人精品 | 午夜熟女插插xx免费视频 | 国产精品久久久久7777 | 国产精品久久久久影院嫩草 | 动漫av一区二区在线观看 | 亚洲成av人片在线观看无码不卡 | 伦伦影院午夜理论片 | 国产av无码专区亚洲a∨毛片 | 国产成人一区二区三区别 | 无码帝国www无码专区色综合 | 免费无码av一区二区 | 国产成人无码区免费内射一片色欲 | 日欧一片内射va在线影院 | 天堂久久天堂av色综合 | 少妇愉情理伦片bd | 狠狠cao日日穞夜夜穞av | 国产成人无码区免费内射一片色欲 | √天堂资源地址中文在线 | 一本大道久久东京热无码av | 亚洲欧洲中文日韩av乱码 | 日韩视频 中文字幕 视频一区 | 国产成人无码a区在线观看视频app | 久久久久99精品国产片 | 亚洲国产成人a精品不卡在线 | 两性色午夜免费视频 | 国产深夜福利视频在线 | 久久久久99精品国产片 | 久久精品国产一区二区三区肥胖 | 亚洲欧美精品伊人久久 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲精品成人福利网站 | 男人的天堂2018无码 | 日本护士xxxxhd少妇 | 中文字幕乱码亚洲无线三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人无码视频免费播放 | 国产舌乚八伦偷品w中 | 欧美日韩久久久精品a片 | 国产亚洲精品久久久闺蜜 | 综合人妻久久一区二区精品 | 亚洲精品综合五月久久小说 | 欧美激情一区二区三区成人 | 久久久久人妻一区精品色欧美 | 奇米影视7777久久精品人人爽 | 亚洲欧美日韩国产精品一区二区 | 精品久久久中文字幕人妻 | 亚洲一区二区观看播放 | 久久国产36精品色熟妇 | 国产真实夫妇视频 | 色诱久久久久综合网ywww | 久久人人爽人人爽人人片av高清 | 日本精品高清一区二区 | 中文字幕人妻无码一夲道 | 国产精品成人av在线观看 | 蜜桃av抽搐高潮一区二区 | 久久久久亚洲精品男人的天堂 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲精品午夜无码电影网 | 亚洲成av人在线观看网址 | 精品亚洲成av人在线观看 | 无码国产色欲xxxxx视频 | 国产成人一区二区三区别 | 无套内谢的新婚少妇国语播放 | 中文字幕av日韩精品一区二区 | 亚洲の无码国产の无码步美 | 中文字幕 亚洲精品 第1页 | 人人妻人人澡人人爽欧美一区九九 | 熟妇人妻中文av无码 | 一本一道久久综合久久 | 欧美老人巨大xxxx做受 | 丝袜人妻一区二区三区 | 成人精品一区二区三区中文字幕 | 国产精品毛多多水多 | 欧美猛少妇色xxxxx | 67194成是人免费无码 | 99精品无人区乱码1区2区3区 | 久久久久se色偷偷亚洲精品av | 无码精品国产va在线观看dvd | 国产精品二区一区二区aⅴ污介绍 | 最新国产乱人伦偷精品免费网站 | 久久久久久亚洲精品a片成人 | 青青青手机频在线观看 | 亚洲中文字幕无码一久久区 | 午夜精品久久久久久久久 | 黑人巨大精品欧美一区二区 | 国语精品一区二区三区 | 天天做天天爱天天爽综合网 | 色综合视频一区二区三区 | 无码国产激情在线观看 | 国产国语老龄妇女a片 | 成人影院yy111111在线观看 | 国产免费久久久久久无码 | 国产在线精品一区二区三区直播 | 欧美日本精品一区二区三区 | 思思久久99热只有频精品66 | 亚洲一区二区三区国产精华液 | 成人欧美一区二区三区黑人免费 | 亚洲精品欧美二区三区中文字幕 | 四虎4hu永久免费 | 人妻与老人中文字幕 | 老熟女乱子伦 | 久久这里只有精品视频9 | 亚洲精品国产品国语在线观看 | 国模大胆一区二区三区 | 亚洲色欲色欲欲www在线 | 国产成人综合色在线观看网站 | 好男人社区资源 | 无码av最新清无码专区吞精 | 两性色午夜免费视频 | 一个人看的视频www在线 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美乱妇无乱码大黄a片 | 亚洲の无码国产の无码影院 | 一个人看的www免费视频在线观看 | 一本无码人妻在中文字幕免费 | 青青久在线视频免费观看 | 日韩欧美成人免费观看 | 在教室伦流澡到高潮hnp视频 | 奇米影视7777久久精品 | 中文字幕精品av一区二区五区 | 丝袜人妻一区二区三区 | 久久久久成人精品免费播放动漫 | 97久久国产亚洲精品超碰热 | 久久99精品久久久久久 | 欧美阿v高清资源不卡在线播放 | 国产av人人夜夜澡人人爽麻豆 | 精品国产一区二区三区四区在线看 | 成人一在线视频日韩国产 | 日韩在线不卡免费视频一区 | 欧美喷潮久久久xxxxx | 国内少妇偷人精品视频 | 国产69精品久久久久app下载 | 亚洲精品美女久久久久久久 | 国产欧美精品一区二区三区 | 九一九色国产 | 日本大乳高潮视频在线观看 | 精品无码av一区二区三区 | 精品久久久中文字幕人妻 | 天天做天天爱天天爽综合网 | 国产成人综合在线女婷五月99播放 | 亚洲爆乳无码专区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 免费国产成人高清在线观看网站 | 亚洲精品成人福利网站 | 国产熟女一区二区三区四区五区 | 国产97色在线 | 免 | 18精品久久久无码午夜福利 | a在线亚洲男人的天堂 | 亚洲s色大片在线观看 | 久久久久久九九精品久 | 少妇高潮喷潮久久久影院 | 中文字幕无码视频专区 | 国产国产精品人在线视 | 欧美 日韩 人妻 高清 中文 | 国产美女精品一区二区三区 | 少妇性俱乐部纵欲狂欢电影 | 女人高潮内射99精品 | 人人爽人人澡人人高潮 | 国产精品亚洲一区二区三区喷水 | 欧美性色19p | 国产sm调教视频在线观看 | 全黄性性激高免费视频 | 亚洲中文字幕无码一久久区 | 亚洲国产av精品一区二区蜜芽 | 中文字幕亚洲情99在线 | 亚洲日韩一区二区 | 天天躁夜夜躁狠狠是什么心态 | 亚洲 日韩 欧美 成人 在线观看 | 一个人免费观看的www视频 | 亚洲熟女一区二区三区 | 国产精品va在线播放 | 激情国产av做激情国产爱 | 97夜夜澡人人双人人人喊 | 国产特级毛片aaaaaa高潮流水 | 无遮挡国产高潮视频免费观看 | 国精品人妻无码一区二区三区蜜柚 | 日韩精品一区二区av在线 | 小sao货水好多真紧h无码视频 | 亚洲自偷精品视频自拍 | 亚洲欧美日韩综合久久久 | 丰满人妻被黑人猛烈进入 | 性啪啪chinese东北女人 | 亚洲熟妇色xxxxx亚洲 | 乱码av麻豆丝袜熟女系列 | 国内精品九九久久久精品 | 人人妻在人人 | 亚洲日韩中文字幕在线播放 | 亚洲精品美女久久久久久久 | 99久久婷婷国产综合精品青草免费 | 国产人妻人伦精品1国产丝袜 | 中文字幕精品av一区二区五区 | 人妻少妇精品久久 | 久久五月精品中文字幕 | 亚洲国产精品无码一区二区三区 | 99久久精品午夜一区二区 | 久久久精品人妻久久影视 | 国产深夜福利视频在线 | 色婷婷综合激情综在线播放 | 天天av天天av天天透 | 国产精品沙发午睡系列 | 桃花色综合影院 | 国产suv精品一区二区五 | 人人妻人人澡人人爽欧美一区九九 | 55夜色66夜色国产精品视频 | 丰满少妇人妻久久久久久 | 亚洲综合久久一区二区 | 亚洲国产精品无码久久久久高潮 | 亚洲欧美中文字幕5发布 | 免费无码肉片在线观看 | 无套内谢的新婚少妇国语播放 | 日日噜噜噜噜夜夜爽亚洲精品 | 2020最新国产自产精品 | 小泽玛莉亚一区二区视频在线 | 性生交大片免费看l | 99麻豆久久久国产精品免费 | 性色欲情网站iwww九文堂 | 国产综合久久久久鬼色 | 四虎永久在线精品免费网址 | 好男人社区资源 | 无码人妻丰满熟妇区毛片18 | 99久久人妻精品免费二区 | 亚洲精品一区二区三区在线观看 | 1000部夫妻午夜免费 | 色欲久久久天天天综合网精品 | 国产无套粉嫩白浆在线 | 国产精品高潮呻吟av久久4虎 | 久热国产vs视频在线观看 | 奇米影视7777久久精品人人爽 | 影音先锋中文字幕无码 | 国产一区二区三区日韩精品 | 国精产品一区二区三区 | 久久久久久av无码免费看大片 | 人人爽人人澡人人人妻 | 俺去俺来也在线www色官网 | √天堂资源地址中文在线 | 亚洲乱码国产乱码精品精 | 久久国内精品自在自线 | 国产偷自视频区视频 | 亚洲经典千人经典日产 | 亚洲中文字幕无码一久久区 | 精品少妇爆乳无码av无码专区 | 18禁止看的免费污网站 | 色综合久久久无码中文字幕 | 国产亚洲视频中文字幕97精品 | 日本大乳高潮视频在线观看 | 熟女俱乐部五十路六十路av | 曰韩少妇内射免费播放 | 无码任你躁久久久久久久 | 5858s亚洲色大成网站www | 乱人伦人妻中文字幕无码久久网 | 久久久久久a亚洲欧洲av冫 | 国产热a欧美热a在线视频 | 精品无码一区二区三区的天堂 | 粗大的内捧猛烈进出视频 | 国产人成高清在线视频99最全资源 | 激情人妻另类人妻伦 | 亚洲国产午夜精品理论片 | 乱人伦中文视频在线观看 | 久久精品人人做人人综合试看 | 欧美色就是色 | 成人三级无码视频在线观看 | 天天综合网天天综合色 | 欧美真人作爱免费视频 | 国产一区二区三区精品视频 | 久久久久99精品国产片 | av人摸人人人澡人人超碰下载 | 无码精品国产va在线观看dvd | 97久久超碰中文字幕 | 欧美xxxxx精品 | 欧美熟妇另类久久久久久多毛 | 亚洲国产av精品一区二区蜜芽 | 国产综合久久久久鬼色 | 清纯唯美经典一区二区 | 亚洲人成影院在线观看 | 四十如虎的丰满熟妇啪啪 | 国产在线一区二区三区四区五区 | 丰满人妻被黑人猛烈进入 | 亚洲色成人中文字幕网站 | 波多野结衣一区二区三区av免费 | 欧美性猛交xxxx富婆 | 一本精品99久久精品77 | 欧美老妇交乱视频在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲精品久久久久久久久久久 | aⅴ在线视频男人的天堂 | 欧美丰满少妇xxxx性 | 好男人社区资源 | 乱人伦人妻中文字幕无码 | 久久久久久亚洲精品a片成人 | 午夜性刺激在线视频免费 | 在线观看免费人成视频 | 久久亚洲中文字幕无码 | 久久久久免费精品国产 | 香港三级日本三级妇三级 | 国产在线精品一区二区三区直播 | 国产片av国语在线观看 | 正在播放老肥熟妇露脸 | 色五月五月丁香亚洲综合网 | 国产精品无码永久免费888 | 骚片av蜜桃精品一区 | 亚洲精品欧美二区三区中文字幕 | 激情国产av做激情国产爱 | 国精品人妻无码一区二区三区蜜柚 | 大地资源中文第3页 | 亲嘴扒胸摸屁股激烈网站 | 永久免费精品精品永久-夜色 | 无码人妻精品一区二区三区不卡 | 日本丰满熟妇videos | 亚洲日韩av一区二区三区中文 | 国产麻豆精品一区二区三区v视界 | 日本精品久久久久中文字幕 | 久久久久成人精品免费播放动漫 | 性欧美疯狂xxxxbbbb | 狠狠色色综合网站 | 国产色在线 | 国产 | 亚洲一区二区三区在线观看网站 | 丰满人妻翻云覆雨呻吟视频 | 国产成人久久精品流白浆 | 国产偷自视频区视频 | 精品国产麻豆免费人成网站 | 国产疯狂伦交大片 | 亚洲日本一区二区三区在线 | 色综合久久久无码中文字幕 | 精品成人av一区二区三区 | 成年美女黄网站色大免费全看 | 国产又粗又硬又大爽黄老大爷视 | 久久久久久九九精品久 | 97色伦图片97综合影院 | 亚洲国产一区二区三区在线观看 | 久久人人爽人人爽人人片ⅴ | 亲嘴扒胸摸屁股激烈网站 | 亚洲精品久久久久中文第一幕 | 高中生自慰www网站 | 东北女人啪啪对白 | 亚洲 另类 在线 欧美 制服 | 亚洲男女内射在线播放 | 欧美兽交xxxx×视频 | 欧美熟妇另类久久久久久不卡 | 99国产欧美久久久精品 | 搡女人真爽免费视频大全 | 欧美老人巨大xxxx做受 | 亚洲成av人综合在线观看 | 日韩在线不卡免费视频一区 | 5858s亚洲色大成网站www | 嫩b人妻精品一区二区三区 | ass日本丰满熟妇pics | 成人无码精品一区二区三区 | 精品亚洲韩国一区二区三区 | 无遮挡国产高潮视频免费观看 | 国产9 9在线 | 中文 | 人妻尝试又大又粗久久 | 精品无人国产偷自产在线 | 成人毛片一区二区 | 少妇性l交大片 | 精品欧美一区二区三区久久久 | 国产精品资源一区二区 | 日韩视频 中文字幕 视频一区 | 国产成人无码a区在线观看视频app | 久久婷婷五月综合色国产香蕉 | 精品亚洲韩国一区二区三区 | 一本色道久久综合狠狠躁 | 欧美精品无码一区二区三区 | 国产精品多人p群无码 | 成在人线av无码免观看麻豆 | 国产香蕉尹人视频在线 | 国产一区二区三区影院 | 精品久久久久久人妻无码中文字幕 | 动漫av一区二区在线观看 | 嫩b人妻精品一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 国产性生交xxxxx无码 | 成人无码视频在线观看网站 | 国产亚洲精品久久久ai换 | 亚洲热妇无码av在线播放 | 国产午夜无码视频在线观看 | 亚洲人成影院在线无码按摩店 | www国产亚洲精品久久网站 | 中文亚洲成a人片在线观看 | 日韩欧美群交p片內射中文 | 撕开奶罩揉吮奶头视频 | 国产午夜无码视频在线观看 | 欧洲熟妇精品视频 | 亚洲 另类 在线 欧美 制服 | 欧美国产日韩亚洲中文 | 国产精品无码永久免费888 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 在线精品国产一区二区三区 | 国产热a欧美热a在线视频 | 性色av无码免费一区二区三区 | 丁香啪啪综合成人亚洲 | 国产成人精品久久亚洲高清不卡 | 国产精品亚洲专区无码不卡 | 国产片av国语在线观看 | 日韩少妇内射免费播放 | 丝袜美腿亚洲一区二区 | 波多野结衣高清一区二区三区 | 日本护士毛茸茸高潮 | 国产免费久久精品国产传媒 | 国产精品无套呻吟在线 | 久久亚洲日韩精品一区二区三区 | 日韩欧美群交p片內射中文 | 成人免费视频视频在线观看 免费 | 亚洲一区av无码专区在线观看 | 欧美日韩在线亚洲综合国产人 | 激情综合激情五月俺也去 | 久久久精品人妻久久影视 | 久久精品人人做人人综合 | 国产成人综合在线女婷五月99播放 | 日本大乳高潮视频在线观看 | 黑人粗大猛烈进出高潮视频 | 爽爽影院免费观看 | 成人一在线视频日韩国产 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕无码人妻少妇免费 | 男女超爽视频免费播放 | 国产精品久久久久久久9999 | 欧美日韩视频无码一区二区三 | 中文字幕久久久久人妻 | 初尝人妻少妇中文字幕 | 国产成人综合美国十次 | 国产精品久久久久久无码 | 国产一区二区三区精品视频 | 麻豆国产97在线 | 欧洲 | 国产无av码在线观看 | av无码电影一区二区三区 | 男女性色大片免费网站 | 国产午夜无码视频在线观看 | 日韩无套无码精品 | 少妇无码av无码专区在线观看 | 乱码av麻豆丝袜熟女系列 | 欧美黑人性暴力猛交喷水 | 丁香啪啪综合成人亚洲 | 欧美日韩精品 | 亚洲精品一区国产 | 一二三四在线观看免费视频 | 精品人妻人人做人人爽 | 国产成人一区二区三区别 | 国产精品亚洲lv粉色 | 野狼第一精品社区 | 国产明星裸体无码xxxx视频 | 色一情一乱一伦一区二区三欧美 | 老太婆性杂交欧美肥老太 | 亚洲国产精品久久久久久 | 午夜男女很黄的视频 | 日本一本二本三区免费 | 十八禁视频网站在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲精品无码国产 | 丰满少妇弄高潮了www | 中文字幕乱码中文乱码51精品 | 久久www免费人成人片 | 国产精品久久国产精品99 | 女人高潮内射99精品 | 中文字幕无码热在线视频 | 四虎影视成人永久免费观看视频 | 免费人成在线视频无码 | 国产人妻人伦精品 | 亚洲午夜久久久影院 | 久久精品国产99久久6动漫 | 免费乱码人妻系列无码专区 | 亚洲国产欧美国产综合一区 | 性色av无码免费一区二区三区 | 无码av免费一区二区三区试看 | 久久综合给久久狠狠97色 | 国产午夜精品一区二区三区嫩草 | 精品国产aⅴ无码一区二区 | 国产精品久久久久无码av色戒 | 少妇人妻大乳在线视频 | 精品人妻中文字幕有码在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲爆乳精品无码一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 欧美阿v高清资源不卡在线播放 | 久久综合九色综合欧美狠狠 | 久久久久久a亚洲欧洲av冫 | 成人毛片一区二区 | 波多野42部无码喷潮在线 | 亚洲欧美色中文字幕在线 | 亚洲国产欧美国产综合一区 | 色妞www精品免费视频 | 国产亚洲日韩欧美另类第八页 | 久久久精品成人免费观看 | 无码人妻丰满熟妇区五十路百度 | 性啪啪chinese东北女人 | 免费国产成人高清在线观看网站 | 99久久人妻精品免费一区 | 婷婷五月综合缴情在线视频 | 欧美日韩视频无码一区二区三 | 亚洲国产精品无码久久久久高潮 | 98国产精品综合一区二区三区 | 国产av无码专区亚洲awww | 亚洲国产成人av在线观看 | 国产精品a成v人在线播放 | 久久精品视频在线看15 | 九九综合va免费看 | 亚洲一区二区三区播放 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 成人亚洲精品久久久久 | 欧美野外疯狂做受xxxx高潮 | 无码成人精品区在线观看 | 亚洲国产成人a精品不卡在线 | 乌克兰少妇xxxx做受 | 在线a亚洲视频播放在线观看 | 婷婷五月综合激情中文字幕 | 欧美乱妇无乱码大黄a片 | 国产激情一区二区三区 | 99精品无人区乱码1区2区3区 | 国产精品亚洲专区无码不卡 | 蜜桃av抽搐高潮一区二区 | 丰满人妻精品国产99aⅴ | 精品无码国产一区二区三区av | 国产在线精品一区二区三区直播 | 高中生自慰www网站 | av无码不卡在线观看免费 | 伊人久久大香线焦av综合影院 | 欧美日韩精品 | a在线观看免费网站大全 | 欧美兽交xxxx×视频 | 爱做久久久久久 | 国产成人精品无码播放 | 亚洲小说图区综合在线 | 少妇邻居内射在线 | 亚洲日韩精品欧美一区二区 | 欧美兽交xxxx×视频 | 俺去俺来也www色官网 | 亚洲男女内射在线播放 | 国内综合精品午夜久久资源 | 99麻豆久久久国产精品免费 | 亚洲另类伦春色综合小说 | 久久99久久99精品中文字幕 | 国产成人一区二区三区在线观看 | 麻豆国产人妻欲求不满谁演的 | 欧美freesex黑人又粗又大 | 任你躁在线精品免费 | 大屁股大乳丰满人妻 | 国产suv精品一区二区五 | 久久亚洲中文字幕精品一区 | 精品无码国产自产拍在线观看蜜 | 天堂а√在线中文在线 | 久久精品国产99精品亚洲 | 久久久中文久久久无码 | 国产成人一区二区三区在线观看 | 久久国产精品_国产精品 | 中文字幕久久久久人妻 | 超碰97人人做人人爱少妇 | 久久久久国色av免费观看性色 | 亚洲日韩av一区二区三区四区 | 亚洲另类伦春色综合小说 | 亚洲 日韩 欧美 成人 在线观看 | 强开小婷嫩苞又嫩又紧视频 | 99视频精品全部免费免费观看 | 性色av无码免费一区二区三区 | 国产人妻人伦精品 | 全黄性性激高免费视频 | 久久综合色之久久综合 | 女人高潮内射99精品 | 日本高清一区免费中文视频 | 久久99精品国产麻豆 | 久热国产vs视频在线观看 | 人妻少妇精品久久 | 国产欧美精品一区二区三区 | 亚洲乱码国产乱码精品精 | 国产女主播喷水视频在线观看 | 亚洲精品无码人妻无码 | 色婷婷久久一区二区三区麻豆 | 国产精品.xx视频.xxtv | 99久久人妻精品免费一区 | 日本熟妇乱子伦xxxx | 亚洲一区二区三区播放 | 久久综合香蕉国产蜜臀av | 男女作爱免费网站 | 综合网日日天干夜夜久久 | v一区无码内射国产 | 亚洲欧美日韩成人高清在线一区 | 四虎影视成人永久免费观看视频 | 久久 国产 尿 小便 嘘嘘 | 成人欧美一区二区三区 | 欧美成人家庭影院 | 强伦人妻一区二区三区视频18 | 蜜臀aⅴ国产精品久久久国产老师 | 免费国产成人高清在线观看网站 | 网友自拍区视频精品 | 精品偷拍一区二区三区在线看 | 日韩视频 中文字幕 视频一区 | 少妇无码一区二区二三区 | 极品嫩模高潮叫床 | 国产人妻人伦精品1国产丝袜 | 丰满诱人的人妻3 | 亚洲日韩乱码中文无码蜜桃臀网站 |