codeEntityReference к методу в Sandcastle developerHowToDocument

Я пытаюсь создать ссылку на пользовательский метод расширения, используя <codeEntityReference> Элемент MAML и как только я создаю документацию, я получаю все <codeEntityReference> помечать содержимое вместо ссылки на весь метод.

Примером метода будет:

namespace SampleProject 
{
    public static class ExtensionMethods
    {
         public static bool SomeExtension<T>(this T some) => true;
    }
}

И <codeEntityReference> будет выглядеть как <codeEntityReference>M:SampleProject.ExtensionMethods.SomeExtension{T}(TObject)</codeEntityReference>

Выше ссылка будет производить вывод, как M: SampleProject.ExtensionMethods.SomeExtension {T} (T).

На самом деле, я получаю следующую ошибку при сборке документации:

предупреждение: BuildAssembler: предупреждение: ResolveReferenceLinksComponent: [52e40f26-3dfe-47e0-adf1-09233e98f42e] Неизвестная цель ссылки ссылки 'M:SampleProject.ExtensionMethods.SomeExtension{T}(T)'

Я что-то пропустил? Что там не так? Я попытался предоставить ссылку на метод как:

M:SampleProject.ExtensionMethods.SomeExtension`1

... но это не решило проблему.

2 ответа

Решение

Наконец, я решил проблему с проверкой того, как компилятор C# генерирует файл документации XML для сборки.

Например, <codeEntityReference> к моему примеру метода расширения будет:

<codeEntityReference>
     M:SampleProject.ExtensionMethods.SomeExtension``1(``0)
</codeEntityReference>

Лучшим подходом было бы использовать инструмент Entity References! Вы можете найти его в меню View->Other Windows в Visual Studio.

Открыв его, выберите "Сущности кода" в поле со списком "Тип" и найдите метод / свойство / класс, для которого требуется ссылка на код. Он будет отображать то, что вам нужно для работы вашего Entity Reference.

Другие вопросы по тегам