2009-06-24 35 views
43

我正在從事一個C++/cli庫主要用於c#應用程序的項目。記錄從c#使用的C++/CLI庫代碼 - 最佳工具和實踐?

有沒有什麼辦法讓C++/cli中的代碼註釋在Visual Studio中對c#intellisence可見?

假設沒有,最好的方法來記錄c + +/cli代碼,以使其更容易從c#中使用(當然在C++/cli當然)?你對XML評論和doxygen vs其他工具(哪些)有什麼看法?

回答

48

我得到它的工作方式如下:

  1. 爲您的C++/CLI標頭條目使用XML樣式註釋。這意味着需要完整的XML註釋(三斜槓註釋,至少<summary>標記)

  2. 確保C++編譯器選項Generate XML Documentation Files處於打開狀態。這應該生成一個XML文件,其文檔名稱與您的程序集(MyDll.xml)相同。

  3. 請確保C#項目引用您的程序集MyDll.dll,其中MyDll.xml也存在於同一個文件夾中。將鼠標懸停在程序集的引用上時,MS Visual Studio將加載文檔。

這對我在Visual Studio 2008中爲.NET 3.5構建的程序集起作用。

+0

呀,關鍵是要在XML(也PDB,如果你想調試)一起你引用的DLL複製。這也將在VS2005中運行。 – 2009-07-02 20:55:19

2

有趣。嘗試了幾種方法之後,它看起來像Managed C++項目和C#之間的智能感知不起作用。

下面的例子將讓你在聲明它的C++環境中獲得適當的智能感知,但引用在C#中的對象不顯示任何內容:

// Gets the value of my ID for the object, which is always 14. 
public: virtual property int MyId 
{ 
    int get() { return 14; } 
} 

XML註釋不工作的。我猜想這是一個錯誤,或者需要一些我無法弄清楚的東西。從這個問題上缺乏答案來看,也許是一個錯誤。

就文檔生成而言,我建議去XML文檔的路徑。 Doxygen supports reading XML documentation這與C#的標準XML文檔大體相同。它往往添加額外的行只是標籤的打開和關閉,但更可讀在我看來比下列doxygen的選擇:

//! A normal member taking two arguments and returning an integer value. 
/*! 
    \param a an integer argument. 
    \param s a constant character pointer. 
    \return The test results 
    \sa Test(), ~Test(), testMeToo() and publicVar() 
*/ 
0

你是對的。它不起作用。 C++版本將其智能感知信息添加到主.ncb文件中,您將獲得方法名稱的自動完成等。但是,您是正確的,因爲您將無法獲得關於每種方法的「評論」描述,等等

0

你可能會有很多值得看看Doxygen。而再看看Doxygen.NET - 這是我們爲我們自己的使用寫了建立從Doxygen的XML文件輸出「對象層次」 ......

2

DocXml具有VS(語法着色,智能感知,自動導出到XML文件)支持的主要優勢。 Doxygen工具可以讀取DocXml格式,所以您仍然可以使用這種格式。

爲了幫助您生成用最少的努力整齊,準確的文檔註釋,你可能想看看我的插件AtomineerUtils。這需要的大部分工作了創建和更新DocXml,使用Doxygen,的JavaDoc或Qt的格式的註釋,並且它支持C,C++,C++/CLI,C#,Java和JavaScript的,打字稿,JScript中,虛幻,PHP和Visual Basic代碼。