记录C ++ / CLI库代码以供c#使用 - 最佳工具和实践?

时间:2009-06-24 19:34:24

标签: documentation c++-cli doxygen documentation-generation

我正在开发一个项目,其中c ++ / cli库主要来自c#应用程序。

有没有办法让c ++ / cli中的代码注释对visual studio中的c#intellisence可见?

假设没有,那么记录c ++ / cli代码的最佳方法是什么才能更容易地使用c#(当然在c ++ / cli中)?您对XML评论vs doxygen与其他工具(哪些)的看法是什么?

5 个答案:

答案 0 :(得分:50)

我已按照以下方式开展工作:

  1. 对C ++ / CLI标头条目使用XML样式注释。这意味着需要完整的XML注释(三重斜杠评论,至少<summary>标记)

  2. 确保已启用C ++编译器选项Generate XML Documentation Files。这应生成一个XML文件,其中包含与程序集同名的文档(MyDll.xml)。

  3. 确保C#项目引用您的程序集MyDll.dll,其中MyDll.xml也存在于同一文件夹中。将鼠标悬停在程序集的引用上时,MS Visual Studio将加载文档。

  4. 这在Visual Studio 2008中适用于为.NET 3.5构建的程序集。

答案 1 :(得分:2)

有趣。在尝试了几种方法之后,它看起来像托管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()
*/

答案 2 :(得分:2)

DocXml的主要优点是受VS支持(语法着色,智能感知,自动导出到XML文件)。 Doxygen工具可以读取DocXml格式,因此您仍然可以使用这种格式。

为了帮助您以最少的努力生成整洁而准确的文档评论,您可以查看我的插件AtomineerUtils。这需要完成创建和更新DocXml,Doxygen,JavaDoc或Qt格式注释的大部分工作,它支持C,C ++,C ++ / CLI,C#,Java,JavaScript,TypeScript,JScript,UnrealScript,PHP和Visual Basic代码。

答案 3 :(得分:0)

你是对的。它不起作用。 C ++构建将其IntelliSense信息添加到主.ncb文件中,您将获得方法名称等的自动完成。但是,您是正确的,因为您将无法获得有关每种方法的“评论”描述等

答案 4 :(得分:0)

看看Doxygen,你可能会有很多价值。然后查找Doxygen.NET - 这是我们为自己编写的东西,它从Doxygen的XML文件输出构建“对象层次结构”......