Документирование кода библиотеки C ++ / CLI для использования на c # - лучшие инструменты и практики?[закрыто]
-
22-07-2019 - |
Вопрос
Я работаю над проектом, в котором библиотека c ++ / cli используется в основном из приложения на c #.
Есть ли какой-нибудь способ сделать комментарии к коду в c ++ / cli видимыми для c # intellisence в Visual Studio?
Предполагая, что это не так, каков был бы наилучший способ документировать код c ++ / cli, чтобы упростить его использование на c # (и, конечно, в c ++ / cli)?Каково ваше мнение о XML-комментариях по сравнению с doxygen и другими инструментами (какими)?
Решение
Я заставил его работать следующим образом:
<Ол> Используйте комментарии в стиле XML для записей заголовка C ++ / CLI. Это означает, что требуется полный XML-комментарий (комментарии с тройным слешем, как минимум тег <summary>
)
Убедитесь, что параметр компилятора C ++ создает файлы XML-документации а> включен. Это должно создать файл XML с документацией с тем же именем, что и ваша сборка (MyDll.xml).
Убедитесь, что проект C # ссылается на вашу сборку MyDll.dll, где MyDll.xml также присутствует в той же папке. При наведении указателя мыши на ссылку из сборки MS Visual Studio загрузит документацию. Р>
Это сработало для меня в Visual Studio 2008 на сборке, созданной для .NET 3.5.
Другие советы
DocXml обладает главным преимуществом поддержки VS (цветовая подсветка синтаксиса, intellisense, автоматический экспорт в файлы XML). Инструменты Doxygen могут читать формат DocXml, поэтому вы все равно можете использовать их и в этом формате.
Чтобы помочь вам создавать аккуратные и точные комментарии к документам с минимальными усилиями, вы можете проверить мое дополнение AtomineerUtils . Это занимает большую часть работы по созданию и обновлению комментариев в формате DocXml, Doxygen, JavaDoc или Qt и поддерживает код C, C ++, C ++ / CLI, C #, Java, JavaScript, TypeScript, JScript, UnrealScript, PHP и Visual Basic. р>
Интересно.После опробования нескольких методов, похоже, что intellisense между управляемым проектом C ++ и C # не работает.
Следующий пример предоставит вам надлежащий intellisense в среде 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 documentation . Doxygen поддерживает чтение XML-документации который в основном идентичен стандартной XML-документации для C #.Он, как правило, добавляет дополнительные строки только для открытия и закрытия тегов, но, на мой взгляд, гораздо более удобочитаем, чем следующий вариант 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()
*/
Вы правы. Не работает Сборка C ++ добавит свою информацию IntelliSense в основной файл .ncb, и вы получите автозаполнение имен методов и т. Д. Однако вы правы в том, что вы не сможете получить & Quot; comment & Quot; описание каждого метода и т. д.
Вероятно, вы будете иметь большую ценность, если взгляните на Doxygen. А затем найдите Doxygen.NET - что-то, что мы написали для нашего собственного использования, которое создает & Quot; Object Hierarchies & Quot; из XML-файла выводит из Doxygen ...