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

Профилировщик NuMega True Time работает в DevPartner Studio от Micro Focus. Он обеспечивает детализацию на уровне строк и методов для приложений .NET, требующих только PDB, без необходимости в источнике (но это помогает.). Он может отличить алгоритмически тяжелые подпрограммы от тех, которые требуют длительного ввода-вывода, используя наш собственный драйвер синхронизации режима ядра для каждого потока. Версия 10.5 поставляется с новой поддержкой 64 процессов 4 февраля 2011 года. Бесстыдный плагин: я работаю над линейкой продуктов DevPartner. Следите за новостями о запуске 10.5 на http://www.DevPartner.com .

Отказ от ответственности: я менеджер по продукту DevPartner в Micro Focus.

48
задан Bill the Lizard 16 April 2010 в 20:33
поделиться

5 ответов

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

  1. Используйте комментарии в стиле XML для записей заголовков C ++ / CLI. Это означает, что требуется полный XML-комментарий (комментарии с тройной косой чертой, как минимум тег

    )

  2. Убедитесь, что параметр компилятора C ++ Generate XML Documentation Files включен . Это должно создать XML-файл с документацией с тем же именем, что и ваша сборка (MyDll.xml).

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

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

53
ответ дан 26 November 2019 в 19:02
поделиться

Интересно. После опробования нескольких методов выяснилось, что intellisense между проектом Managed 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. 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()
*/
2
ответ дан 26 November 2019 в 19:02
поделиться

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

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

2
ответ дан 26 November 2019 в 19:02
поделиться

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

0
ответ дан 26 November 2019 в 19:02
поделиться

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

0
ответ дан 26 November 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: