Документирование кода библиотеки С++/CLI для использования с С# - лучшие инструменты и методы?
Я работаю над проектом, в котором библиотека С++/cli используется в основном из приложения С#.
Есть ли способ сделать комментарии кода в С++/cli видимыми для С# intellisence в visual studio?
Предполагая, что нет, что было бы лучшим способом документировать код С++/cli, чтобы облегчить его использование из С# (и в рамках С++/cli, конечно)? Что вы думаете о комментариях XML против doxygen vs других инструментов (которые)?
Ответы
Ответ 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...