我正在开发一个项目,其中c ++ / cli库主要来自c#应用程序。
有没有办法让c ++ / cli中的代码注释对visual studio中的c#intellisence可见?
假设没有,那么记录c ++ / cli代码的最佳方法是什么才能更容易地使用c#(当然在c ++ / cli中)?您对XML评论vs doxygen与其他工具(哪些)的看法是什么?
答案 0 :(得分:50)
我已按照以下方式开展工作:
对C ++ / CLI标头条目使用XML样式注释。这意味着需要完整的XML注释(三重斜杠评论,至少<summary>
标记)
确保已启用C ++编译器选项Generate XML Documentation Files。这应生成一个XML文件,其中包含与程序集同名的文档(MyDll.xml)。
确保C#项目引用您的程序集MyDll.dll,其中MyDll.xml也存在于同一文件夹中。将鼠标悬停在程序集的引用上时,MS Visual Studio将加载文档。
这在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文件输出构建“对象层次结构”......