51 votes

Documenter le code de bibliothèque C ++ / CLI pour une utilisation à partir de c # - meilleurs outils et pratiques?

Je travaille sur un projet dans lequel une bibliothèque c ++ / cli est utilisée principalement à partir d'une application ac #.

Existe-t-il un moyen de rendre les commentaires de code dans c ++ / cli visibles dans c # intellisence dans Visual Studio?

En supposant qu'il n'y en ait pas, quel serait le meilleur moyen de documenter le code c ++ / cli pour permettre son utilisation plus facile à partir de c # (et dans c ++ / cli bien sûr)? Quel est votre avis sur les commentaires XML vs doxygen vs autres outils (lesquels)?

57voto

Zoinks Points 540

J'ai eu à le faire fonctionner comme suit:

  1. Utilisation de XML les commentaires de style pour votre C++/CLI-tête entrées. Cela signifie que la pleine commentaire XML est nécessaire (triple slash commentaires, tag au minimum)

  2. Assurez-vous que le compilateur C++ option Générer le XML dans les Fichiers de Documentation est sur. Cela devrait générer un fichier XML avec de la documentation avec le même nom que votre assemblée MyDll.xml).

  3. Assurez-vous que les références de projet C# votre assemblée MyDll.dll où MyDll.xml est également présent dans le même dossier. Lorsque vous passez la souris sur une référence à partir de l'assemblée, MS Visual Studio se charge de la documentation.

Cela a fonctionné pour moi dans Visual Studio 2008 un ensemble construit pour les .NET 3.5.

2voto

Jason Williams Points 31901

DocXml a l'avantage majeur d'être pris en charge par VS (syntaxe de la coloration, intellisense, à l'export automatique pour les fichiers XML). Le Doxygen outils peut lire DocXml format de sorte que vous pouvez toujours utiliser ce format est trop.

Pour vous aider à générer soigné et précis Doc commentaires avec un minimum d'effort, vous pouvez consulter mon addin AtomineerUtils. Cela prend plus de travaux de création et de mise à jour DocXml, Doxygen, JavaDoc ou Qt format de commentaires, et il prend en charge le C, C++, C++/CLI, C#, Java, JavaScript, Tapuscrit, JScript, UnrealScript, PHP et le code Visual Basic.

1voto

Will Eddins Points 6451

Intéressant. Après avoir essayé plusieurs méthodes, il est à la recherche comme l'intellisense entre une gestion de projet C++ et C# ne fonctionne pas.

L'exemple suivant vous donnera bonne intellisense dans l'environnement C++ où il est déclaré, mais faisant référence à l'objet en C# ne montre rien:

// Gets the value of my ID for the object, which is always 14.
public: virtual property int MyId
{
    int get() { return 14; } 
}

Commentaires XML ne fonctionne pas non plus. Je suppose que c'est soit un bug, ou exige quelque chose que je ne peux pas comprendre. À en juger par le manque de réponses sur cette question, peut-être un bug.

Aussi loin que la génération de la documentation, je vous conseille d'aller le chemin de la documentation XML. Doxygen prend en charge la lecture de la documentation XML qui est essentiellement identique à la norme XML de documentation pour C#. Il a tendance à ajouter des lignes supplémentaires juste pour la balise d'ouvertures et de fermetures, mais est beaucoup plus lisible à mon avis que les suivantes doxygen alternative:

//! 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()
*/

0voto

maxwellb Points 3713

Tu as raison. Ça ne marche pas La version C ++ ajoutera ses informations IntelliSense dans le fichier .ncb principal et vous obtiendrez l'auto-complétion des noms de méthodes, etc. Cependant, vous avez raison, vous ne pourrez pas obtenir la description du "commentaire" à propos de chaque méthode, etc. .

0voto

Thomas Hansen Points 3348

Vous aurez probablement beaucoup de valeur à regarder Doxygen. Et puis cherchez Doxygen.NET - c'est quelque chose que nous avons écrit pour notre propre usage et qui construit des "hiérarchies d'objet" à partir des sorties de fichier XML de Doxygen ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X