Visual c++ Sandcastle、/doc和非托管C++; 我研究一个使用非托管VisualC++和少量C语言的项目。我们正试图找到一种方法来记录我们的项目,既有API参考,也有一些附加的概念文档。理想情况下,所有文档都将保存在一个.chm文件中,我们可以将其与产品一起分发 我已经熟悉了doxGEN,作为一个很长时间的C++开发人员。有人建议我也去看看沙堡,但我遇到了一些障碍 从许多其他来源,包括这个站点上的其他帖子,众所周知,SoScistt不支持非托管C++。我确实找到了一个帖子,它似乎表明你仍然可以通过添加API引用作为概念主题来将C++文档塞进SoS城堡。p> 使用VisualStudio 2010,可以打开非托管C++项目的项目设置中的/DOC选项。这将生成.XDC文件,然后studio将其编译成一个.xml文件,该文件与lib/dll/exe一起使用。我陷入困境的地方是,不清楚如何处理这个xml文件。我在网上发现的一些页面建议您可以使用这个文件来进行智能感知,但我从未见过这种工作在非托管C++中。我希望我能够以某种方式在Sandcastle帮助文件生成器中使用这个.xml文件,但我在网上找不到任何这样做的例子,我对SHFB的每一次尝试都失败了。如果我想添加现有的概念帮助文件,它似乎只需要MAML或HTML文件

Visual c++ Sandcastle、/doc和非托管C++; 我研究一个使用非托管VisualC++和少量C语言的项目。我们正试图找到一种方法来记录我们的项目,既有API参考,也有一些附加的概念文档。理想情况下,所有文档都将保存在一个.chm文件中,我们可以将其与产品一起分发 我已经熟悉了doxGEN,作为一个很长时间的C++开发人员。有人建议我也去看看沙堡,但我遇到了一些障碍 从许多其他来源,包括这个站点上的其他帖子,众所周知,SoScistt不支持非托管C++。我确实找到了一个帖子,它似乎表明你仍然可以通过添加API引用作为概念主题来将C++文档塞进SoS城堡。p> 使用VisualStudio 2010,可以打开非托管C++项目的项目设置中的/DOC选项。这将生成.XDC文件,然后studio将其编译成一个.xml文件,该文件与lib/dll/exe一起使用。我陷入困境的地方是,不清楚如何处理这个xml文件。我在网上发现的一些页面建议您可以使用这个文件来进行智能感知,但我从未见过这种工作在非托管C++中。我希望我能够以某种方式在Sandcastle帮助文件生成器中使用这个.xml文件,但我在网上找不到任何这样做的例子,我对SHFB的每一次尝试都失败了。如果我想添加现有的概念帮助文件,它似乎只需要MAML或HTML文件,visual-c++,doxygen,unmanaged,sandcastle,shfb,Visual C++,Doxygen,Unmanaged,Sandcastle,Shfb,因此,我的问题是: 有没有办法将我的/doc生成的.xml文件放入我的SHFB帮助解决方案

因此,我的问题是:

  • 有没有办法将我的/doc生成的.xml文件放入我的SHFB帮助解决方案
  • <如果没有,对于非托管C++(?)/LIE的DO/DOC选项有什么意义?
  • 是否可以对/doc生成的.xml文件进行某种转换,生成HTML或MAML,然后通过SHFB导入

  • 这行得通吗,还是我应该回到Doxygen?

    理论上,Sandcastle可以用来记录非托管代码,但它需要一个工具来生成当前由MRefBuilder.exe工具为托管代码程序集生成的等效反射数据文件。据我所知,到目前为止还没有人这样做

    我无法评论由于没有使用C++,智能化的缺乏。猜测一下,/doc可能用于托管代码输出,假设使用了相同的编译器,但有一些额外的命令行选项

    使用XSL将XML注释转换为MAML是一种可能性,但我也不知道有人在追求这一选择。我的猜测是,大多数人选择在这种情况下使用强氧,因为它是一个既定的解决方案


    埃里克

    我也有类似的情况。我需要C++/CLI绑定中的XML文档,以便.NET代码可以使用Intellisense查看它们。但仅供参考,Visual Studio 2010不支持本机代码中的XML文档:

    Visual Studio 2010
    在VisualC++中,可以添加XML 源代码的文档(三重斜杠)注释和说明 编译器将它们输出到.xml文件。然后可以删除此文件 流程的输入,该流程为中的类创建文档 代码<强>此版本中的VisualC++的IDE不支持XML 智能感知评论。

    该限制在Visual Studio 2013中被删除。但是,如果您在本机代码中使用模板(例如Boost库),这仍然是一个令人讨厌的生态系统:

    在当前版本中,不会对模板或任何包含模板类型的内容(例如,将参数作为模板的函数)处理代码注释。添加这样的注释将导致未定义的行为

    我在搜索一种方法以临时禁用包含此类库时使用
    #pragma
    #define
    的XML注释解析器时发现了您的问题