2013-01-02 71 views
2

我在使用非託管visual C++和少量C#的項目上工作。我們正試圖想出一種方法來記錄我們的項目,既有API參考,也有一些額外的概念性文檔。理想情況下,所有文檔都可以共存在.chm文件中,我們可以將其與我們的產品一起分發。Sandcastle,/ doc和Unmanaged C++

作爲一個很長時間的C++開發人員,我已經很熟悉Doxygen。有人建議我也看看沙堡,但我遇到了一些困難。

從其他許多來源,包括本網站上的其他文章,衆所周知sandcastle不支持非託管C++。我確實發現了一篇文章,似乎表明您仍然可以將C++文檔塞進sandcastle中,方法是將API參考添加爲概念性主題。

使用Visual Studio 2010,您可以打開項目設置中的/ doc選項以用於非託管C++項目。這會產生.XDC文件,然後這個工作室將編譯成一個與你的lib/dll/exe一起的.xml文件。我被卡住的地方是不清楚你能用這個XML文件做什麼。我在網上找到的一些網頁建議您可以使用此文件進行智能感知,但我從未在非託管C++中看到過這種工作。我希望我能夠在Sandcastle Help File Builder中以某種方式使用這個.xml文件,但我找不到任何關於如何在線完成的例子,並且我對SHFB所做的每一次嘗試都失敗了。它似乎只想要MAML或HTML文件,如果我想添加一個現有的概念性幫助文件。

所以我的問題:

  1. 有沒有辦法讓我的/ DOC產生的.xml文件到我SHFB幫助解決?
  2. 如果不是,非託管C++的/ doc選項有什麼意義?
  3. 在我的/ doc生成的.xml文件中生成可以通過SHFB導入的HTML或MAML的文件時,是否可以進行某種轉換?

這個工作,或者我應該回到Doxygen?

回答

2

理論上,Sandcastle可以用來記錄非託管代碼,但它需要一個工具來生成當前由託管代碼程序集MRefBuilder.exe工具生成的等效反射數據文件。到目前爲止,根據我的瞭解,沒有人做到這一點。

因爲我不再使用它,所以我無法評論缺乏對unmanged C++的智能感知。猜測,假設使用相同的編譯器,但有一些額外的命令行選項,/ doc可能是託管代碼輸出的代碼。

使用XSL將XML註釋轉換爲MAML是一種可能性,但同樣,這是一個我不知道任何人追求的選項。我的猜測是,大多數選擇在這種情況下使用Doxygen,因爲它是一個既定的解決方案。

埃裏克

1

我也有類似的情況。我需要在我的C++/CLI綁定中使用XML文檔,以便.NET代碼可以使用Intellisense查看它們。但僅供參考,Visual Studio 2010中不支持XML文檔中的本機代碼:

https://msdn.microsoft.com/en-us/library/ms177226(v=vs.100).aspx

Visual Studio 2010中
在Visual C++中,你可以添加XML 文檔(三斜槓)評論到您的源代碼並指示 編譯器將它們輸出到.xml文件。然後該文件可以是 輸入到一個爲 代碼中的類創建文檔的進程。 此版本的Visual C++ IDE不支持Intellisense中的XML 註釋。

這種限制是在Visual Studio 2013年。但是去掉,它仍然是一個惱人的生態系統,如果您在本機代碼使用模板(如Boost庫)工作:

在當前版本代碼註釋不會在模板或包含模板類型的任何東西(例如,以參數爲模板的函數)上處理。添加這些註釋將導致未定義的行爲。

,我發現你的問題,同時尋找一種方式來與#pragma#define包括這些庫時暫時禁用XML解析器評論。