Подтвердить что ты не робот

Документирование кода библиотеки С++/CLI для использования с С# - лучшие инструменты и методы?

Я работаю над проектом, в котором библиотека С++/cli используется в основном из приложения С#.

Есть ли способ сделать комментарии кода в С++/cli видимыми для С# intellisence в visual studio?

Предполагая, что нет, что было бы лучшим способом документировать код С++/cli, чтобы облегчить его использование из С# (и в рамках С++/cli, конечно)? Что вы думаете о комментариях XML против doxygen vs других инструментов (которые)?

4b9b3361

Ответ 1

Я начал работать следующим образом:

  • Используйте комментарии стиля XML для записей заголовков С++/CLI. Это означает, что требуется полный комментарий XML (комментарии с тройным слэш, тег <summary> как минимум)

  • Убедитесь, что включен компилятор С++ Создать файлы документации XML. Это должно сгенерировать XML файл с документацией с тем же именем, что и ваша сборка (MyDll.xml).

  • Убедитесь, что проект С# ссылается на вашу сборку MyDll.dll, где MyDll.xml также присутствует в той же папке. Когда вы наведите указатель мыши на ссылку из сборки, MS Visual Studio загрузит документацию.

Это работало для меня в Visual Studio 2008 на сборке, созданной для .NET 3.5.

Ответ 2

Интересно. Попробовав несколько методов, это выглядит как intellisense между управляемым проектом С++ и С#, не работает.

Следующий пример даст вам правильную intellisense в среде С++, где он объявлен, но ссылка на объект в С# ничего не показывает:

// 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, которая в основном идентична стандартной документации 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()
*/

Ответ 3

DocXml имеет главное преимущество поддержки VS (синтаксическая раскраска, intellisense, автоматический экспорт в файлы XML). Инструменты Doxygen могут читать формат DocXml, поэтому вы также можете использовать их в этом формате.

Чтобы помочь вам аккумулировать аккуратные и точные комментарии к Doc с минимальными усилиями, вы можете проверить мой addin AtomineerUtils. Это занимает большую часть работы по созданию и обновлению комментариев DocXml, Doxygen, JavaDoc или Qt и поддерживает C, С++, С++/CLI, С#, Java, JavaScript, TypeScript, JScript, UnrealScript, PHP и Visual Basic код.

Ответ 4

Вы правы. Это не работает. Сборка С++ добавит свою информацию IntelliSense в главный файл .ncb, и вы получите автозаполнение имен методов и т.д. Однако вы правы в том, что не сможете получить "комментарий" о каждом методе и т.д..

Ответ 5

Вероятно, вам будет очень полезно взглянуть на Doxygen. И затем найдите Doxygen.NET - это то, что мы написали для нашего собственного использования, который строит "Иерархии объектов" из выходных файлов XML из Doxygen...