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

问题描述 投票:47回答:5

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

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

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

documentation c++-cli doxygen documentation-generation
5个回答
51
投票

我已经让它工作如下:

  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构建的程序集。


2
投票

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

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


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 ++构建将其IntelliSense信息添加到主.ncb文件中,您将获得方法名称等的自动完成。但是,您是正确的,因为您将无法获得有关每种方法的“评论”描述等。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.