2008-10-14 71 views
23

我有一個程序集,其中包含非常全面的基於XML的文檔,它通過Sandcastle用於生成產品的幫助文件。當程序員顯然使用程序集時,我們還使用輸出XML文件在Visual Studio中提供正確的Intellisense。在Assembly中嵌入Intellisense Xml文檔?

爲了做到這一點,似乎我們都爲用戶提供程序集(「assembly.dll」)和文檔(「assembly.xml」)。

是否有可能將文檔嵌入到程序集中,因此我們只需提供單個程序集文件,Visual Studio就能夠提取信息?也許嵌入作爲資源或類似的東西?

回答

13

不幸的是,你需要提供兩者,因爲Visual Studio只知道查看Intellisense的XML文檔。

+1

一個恥辱。等效文檔嵌入到COM服務器(DLL)中。很難想象它會增加文件的大小。 – MarkJ 2012-09-20 10:19:47

1

我錯過了什麼嗎?我總是照常評論(使用3個斜線或3個刻度線(vb)),使用內置的xml標記,當我使用程序集時,我得到intellisense - 我很少使用extrernal xml文件。

+2

您是否在代碼完成時獲得了Intellisense,或者您是否真的獲得了您編寫的文檔?即VS可以自動生成方法列表及其參數等等,但除非我確定主機上也存在文檔,否則我不會收到文檔。 – ulrikj 2008-10-15 07:24:40

5

如果您搜索C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727,您會發現您在應用程序中引用的所有.net程序集都使用xml文件。如果xml文件存在,Visual Studio將只爲程序集提供智能感知。例如,如果要關閉Visual Studio,然後刪除System.Drawing.xml文件,然後重新打開VS,則不應該有該程序集的任何智能感知。然後,您需要關閉VS,將其複製回來,然後重新打開VS以使智能感知重新開始工作。

+0

實際上,如果您刪除了XML文件,還是有_some_ Intellisense。您不會看到任何「///」註釋,但您仍然可以獲取方法簽名和重載。據推測,這是通過反思完成的。 – 2011-03-31 20:20:32