我正在开发一个主要从 ac# 应用程序使用 c++/cli 库的项目。
有没有办法让 c++/cli 中的代码注释对 Visual Studio 中的 c# 智能可见?
假设没有,那么记录 c++/cli 代码以使其更容易从 c#(当然也包括在 c++/cli 中)使用的最佳方法是什么?您对 XML 注释、doxygen 和其他工具(哪个)有何看法?
我正在开发一个主要从 ac# 应用程序使用 c++/cli 库的项目。
有没有办法让 c++/cli 中的代码注释对 Visual Studio 中的 c# 智能可见?
假设没有,那么记录 c++/cli 代码以使其更容易从 c#(当然也包括在 c++/cli 中)使用的最佳方法是什么?您对 XML 注释、doxygen 和其他工具(哪个)有何看法?
我已经让它按如下方式工作:
为您的 C++/CLI 标头条目使用 XML 样式注释。这意味着需要完整的 XML 注释(三斜杠注释,<summary>
至少有标记)
确保 C++ 编译器选项生成 XML 文档文件已打开。这应该会生成一个 XML 文件,其中包含与您的程序集 (MyDll.xml) 同名的文档。
确保 C# 项目引用您的程序集 MyDll.dll,其中 MyDll.xml 也存在于同一文件夹中。当您将鼠标悬停在程序集中的引用上时,MS Visual Studio 将加载文档。
这适用于我在 Visual Studio 2008 中为 .NET 3.5 构建的程序集。
DocXml 的主要优点是受 VS 支持(语法着色、智能感知、自动导出到 XML 文件)。Doxygen 工具可以读取 DocXml 格式,因此您仍然可以将它们与这种格式一起使用。
为了帮助您以最少的努力生成整洁准确的文档注释,您可能想查看我的插件AtomineerUtils。这消除了创建和更新 DocXml、Doxygen、JavaDoc 或 Qt 格式注释的大部分工作,并且它支持 C、C++、C++/CLI、C#、Java、JavaScript、TypeScript、JScript、UnrealScript、PHP 和 Visual Basic 代码。
有趣的。在尝试了几种方法之后,托管 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 支持读取 XML 文档,这与 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()
*/
你说的对。它不起作用。C++ 构建会将其 IntelliSense 信息添加到主 .ncb 文件中,并且您将获得方法名称的自动完成等。但是,您是正确的,因为您将无法获得有关每个方法的“注释”描述等.
看看 Doxygen,你可能会有很多价值。然后查找 Doxygen.NET - 这是我们为自己使用而编写的东西,它从 Doxygen 的 XML 文件输出构建“对象层次结构”......