web-dev-qa-db-ja.com

C#から使用するためのC ++ / CLIライブラリコードの文書化-ベストツールとプラクティス?

私は、c ++/cliライブラリが主にc#アプリケーションから使用されているプロジェクトに取り組んでいます。

Visual Studio内のc#インテリセンスにc ++/cliのコードコメントを表示する方法はありますか?

ない場合、c#から(そしてもちろんc ++/cli内で)簡単に使用できるようにc ++/cliコードを文書化する最良の方法は何でしょうか? XMLコメントvsdoxygen vs他のツール(どれ)についてどう思いますか?

48
Hrvoje Prgeša

私はそれを次のように動作させるようになりました:

  1. C++/CLIヘッダーエントリにXMLスタイルのコメントを使用します。これは、完全なXMLコメントが必要であることを意味します(トリプルスラッシュコメント、<summary>少なくともタグ)

  2. C++コンパイラオプション XMLドキュメントファイルの生成 がオンになっていることを確認します。これにより、アセンブリと同じ名前のドキュメント(MyDll.xml)を含むXMLファイルが生成されます。

  3. C#プロジェクトがアセンブリMyDll.dllを参照していることを確認してください。ここで、MyDll.xmlも同じフォルダーにあります。アセンブリからの参照にマウスを合わせると、MS VisualStudioによってドキュメントが読み込まれます。

これは、.NET3.5用に構築されたアセンブリ上のVisualStudio2008で機能しました。

52
Zoinks

DocXmlには、VSでサポートされるという大きな利点があります(構文の色付け、インテリセンス、XMLファイルへの自動エクスポート)。 DoxygenツールはDocXml形式を読み取ることができるため、この形式でも使用できます。

最小限の労力で整頓された正確なドキュメントコメントを生成できるように、私のアドイン AtomineerUtils を確認することをお勧めします。これにより、DocXml、Doxygen、JavaDoc、またはQt形式のコメントの作成と更新にかかる作業のほとんどが不要になり、C、C++、C++/CLI、C#、Java、JavaScript、TypeScript、JScript、UnrealScript、PHPおよびVisualBasicコード。

2
Jason Williams

面白い。いくつかの方法を試したところ、Managed 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()
*/
2
Will Eddins

あなたが正しいです。動作しません。 C++ビルドはそのIntelliSense情報をマスター.ncbファイルに追加し、メソッド名などのオートコンプリートを取得します。ただし、各メソッドなどに関する「コメント」の説明を取得できないという点で正しいです。 。

0
maxwellb

Doxygenを見ると、おそらく多くの価値があります。次に、Doxygen.NETを検索します。これは、DoxygenからのXMLファイル出力から「オブジェクト階層」を構築する独自の使用のために作成したものです...

0
Thomas Hansen