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.