3

私は、管理されていないVisual C ++とわずかなC#を使用するプロジェクトに取り組んでいます。私たちは、APIリファレンスといくつかの追加の概念ドキュメントの両方で、プロジェクトをドキュメント化する方法を考え出そうとしています。理想的には、すべてのドキュメントは、製品と一緒に配布できる.chmファイルに一緒に存在します。

私は長年のC++開発者として、すでにDoxygenに精通していました。誰かが私もサンドキャッスルを調べるように提案しましたが、私はいくつかの障害に遭遇しました。

このサイトの他の投稿を含む他の多くのソースから、sandcastleがアンマネージC++をサポートしていないことはよく知られています。APIリファレンスを概念的なトピックとして追加することで、C++ドキュメントをサンドキャッスルに詰め込むことができることを示しているように見える投稿を見つけました。

Visual Studio 2010を使用すると、アンマネージC++プロジェクトのプロジェクト設定で/docオプションをオンにできます。これにより、.XDCファイルが生成され、スタジオは、lib / dll/exeと一緒に使用される.xmlファイルにコンパイルします。私が立ち往生しているのは、このxmlファイルで何ができるのかがはっきりしないことです。私がオンラインで見つけたいくつかのページは、このファイルをインテリセンスに使用できる可能性があることを示唆していますが、アンマネージC++でそれが機能するのを見たことがありません。どういうわけかSandcastleHelpFile Builderでこの.xmlファイルを使用できるかもしれないと期待していましたが、それがオンラインでどのように行われたかの例を見つけることができず、SHFBで行ったすべての試みは失敗しました。既存の概念的なヘルプファイルを追加したい場合にのみ、MAMLまたはHTMLファイルが必要なようです。

だから私の質問:

  1. / docで生成された.xmlファイルをSHFBヘルプソリューションに取り込む方法はありますか?
  2. そうでない場合、アンマネージC++の/docオプションのポイントは何ですか?
  3. / docで生成された.xmlファイルを変換してHTMLまたはMAMLを生成し、SHFB経由でインポートできるような変換はありますか?

これは機能しますか、それともDoxygenに戻る必要がありますか?

4

2 に答える 2

4

理論的には、Sandcastle を使用してアンマネージ コードを文書化できますが、現在 MRefBuilder.exe ツールによってマネージ コード アセンブリ用に生成されているものと同等のリフレクション データ ファイルを生成するツールが必要になります。これまでのところ、私の知る限り誰もそれを行っていません。

管理されていない C++ の IntelliSense の欠如については、私はもう使用していないのでコメントできません。推測では、同じコンパイラが使用されているが、いくつかのコマンド ライン オプションが追加されていると仮定すると、/doc はマネージ コード出力用に存在する可能性があります。

XSL を使用して XML コメントを MAML に変換することも可能ですが、繰り返しになりますが、それを追求している人を私は知りません。私の推測では、この場合、Doxygen は確立されたソリューションであるため、ほとんどが Doxygen を使用することを選択します。

エリック

于 2013-01-04T02:54:32.140 に答える
2

私も似たような状況です。.NET コードが Intellisense で参照できるように、C++/CLI バインディングに XML ドキュメントが必要です。ただし、参考までに、Visual Studio 2010 はネイティブ コードの XML ドキュメントをサポートしていません。

https://msdn.microsoft.com/en-us/library/ms177226(v=vs.100).aspx

Visual Studio 2010
Visual C++ では、XML ドキュメント (トリプル スラッシュ) コメントをソース コードに追加し、それらを .xml ファイルに出力するようコンパイラに指示できます。このファイルは、コード内のクラスのドキュメントを作成するプロセスに入力できます。このバージョンの Visual C++ 用 IDE は、Intellisense の XML コメントをサポートしていません。

その制限は、Visual Studio 2013 で取り除かれました。ただし、ネイティブ コードでテンプレートを使用する場合 (Boost ライブラリなど) を使用する場合、エコシステムを操作するのは依然として厄介です。

現在のリリースでは、コード コメントは、テンプレートまたはテンプレート タイプを含むもの (たとえば、パラメーターをテンプレートとして受け取る関数) では処理されません。このようなコメントを追加すると、未定義の動作が発生します。

#pragmaまたは#defineそのようなライブラリを含めるときにXML コメント パーサーを一時的に無効にする方法を探しているときに、あなたの質問を見つけました。

于 2017-03-03T15:38:12.853 に答える