logging从C#中使用的C ++ / CLI库代码 – 最好的工具和实践?

我正在从事一个项目,主要从ac#应用程序中使用c ++ / cli库。

有没有什么办法使c ++ / cli中的代码注释可视化到Visual Studio中的c#intellisence?

假设没有,最好的方式来logging的c + + / cli代码,以使其更容易从c#中使用(当然在c + + / cli当然)? 你对XML评论和doxygen vs其他工具(哪些)有什么看法?

我已经得到它的工作如下:

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

  2. 确保C ++编译器选项“ 生成XML文档文件”处于打开状态。 这应该生成一个XML文件,其名称与您的程序集(MyDll.xml)的名称相同。

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

这对我在Visual Studio 2008中为.NET 3.5构build的程序集起作用。

有趣。 在尝试了几种方法之后,看起来像Managed C ++项目和C#之间的intellisense不起作用。

下面的例子会在C ++环境中声明适当的intellisense,但是在C#中引用对象不会显示任何内容:

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

XML注释也不起作用。 我猜想这是一个错误,或者需要一些我无法弄清楚的东西。 从这个问题上缺乏答案来看,也许是一个错误。

至于文档生成,我build议去XML文档的path。 Doxygen支持读取与C#的标准XML文档大致相同的XML文档。 它往往会添加额外的行,只是为了打开和closures标签,但在我看来比以下doxygen替代方式更可读:

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

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

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

你是对的。 它不起作用。 C ++版本将其智能感知信息添加到主.ncb文件中,您将获得方法名称的自动完成等。但是,您是正确的,因为您将无法获得有关每个方法的“注释”说明等。

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