C # XML документация '<include>' тег не отображается в intellisense? - PullRequest
1 голос
/ 22 октября 2019

Я разрабатывал библиотеку классов C # в Visual Studio и использовал комментарии к документации XML в первую очередь для их интеграции с Intellisense. Тем не менее, большая часть комментариев стала довольно загроможденной, поэтому теперь я стараюсь использовать тег <include> и внешний XML-документ, чтобы уменьшить беспорядок.

Моя проблема в том, что при использовании тега <include> Intellisense, по-видимому, не обновляется с информацией, не отображает какие-либо теги <summary> и <param>, которые я назначил некоторым из моих классов иметоды.

Например, у меня мог бы быть класс Test ', документированный как показано:

/// <include file="docs.xml" path='extradoc/class[@name="Test"]/*' />
        class Test { string foo = "bar"; }

И иметь docs.xml:

<?xml version="1.0" encoding="utf-8" ?>
<extradoc>
  <class name="Test">
    <summary>
      Contains some Foo.
    </summary>
  </class>
</extradoc>

И при сборке выходной XMLзаполняется правильно:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Example Program</name>
    </assembly>
    <members>
        <member name="T:Example_Program.Program.Test">
            <summary>
      Contains some Foo.
    </summary>
        </member>
    </members>
</doc>

Единственная проблема заключается в том, что, как я мог бы попытаться, эта документация не будет появляться в полях intellisense при добавлении моего кода. Я пропускаю какой-то параметр конфигурации Visual Studio? Я просмотрел документацию MSN безрезультатно.

1 Ответ

0 голосов
/ 23 октября 2019

Моя проблема в том, что при использовании тега Intellisense, по-видимому, не обновляется вместе с информацией, не отображаются какие-либо теги and, которые я назначил некоторым из моих классов и методов.

1. Избегайте, чтобы ваша проблема не могла видеть summary в Intellisense в текущем проекте A.

Вы можете получить помощь по этому документу ,эта технология используется, чтобы обеспечить лучший опыт чтения. Итак, если у вас есть класс Test в текущей теме A, когда вы увидите содержимое в редакторе кода VS, вы увидите что-то вроде:

enter image description here

Ожидается, что вы больше не увидите эти богатые комментарии в проекте А, потому что они были перемещены в docs.xml.

2. Если вы имеете в виду при создании новогоВ проекте B (или при совместном использовании сборки другим разработчикам) Intellisense не может распознать ваш класс Test.

Две возможные причины:

1. Выход xx.dll и xxXML из проекта A не находится в той же папке, поэтому, когда вы ссылаетесь на xx.dll в вашем новом проекте, Intellisense не будет отображать комментарии к документации.

2. Я думаю, что-то не так с вашим docs.xml файл. (Я не могу найти никакого официального документа, который указывает, что эта технология поддерживает определяемые пользователем узлы, такие как extradoc и class в docs.xml, я использовал эти два узла, и Intellisense не работал, после изменения их на нормальные docs и members, теперь это работает)

Попробуйте использовать docs.xml и include таким образом:

<?xml version="1.0" encoding="utf-8" ?>
<docs>
  <members name="MyTests">
    <Test>
      <summary>
        This class is public, but do nothing
      </summary>
      <remarks>
        Just write something here to indicate this is remarks.
      </remarks>
    </Test>
  </members>
</docs>

и

/// <include file="docs.xml" path='docs/members[@name="MyTests"]/Test/*' />
    public class Test { }

Я предлагаю вам использовать публичный класс для тестирования ... После этого создайте новый проект и укажите, что xx.dll, при вызове Test класса вы можете увидеть сводку:

enter image description here

И если мы F12, мы можем увидеть подробные комментарии:

enter image description here

Надеюсь, это поможет:)

...