codeEntityReference методу на замок из песка 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.Некоторое Растяжение{T}(T) .

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

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

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

M:SampleProject.ExtensionMethods.SomeExtension`1

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

2 3

2 ответа:

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

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

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

Лучшим подходом было бы использовать инструмент ссылки на сущности! Вы можете найти его в меню Вид->другие окна в visual studio.

Как только вы его откроете, выберите "объекты кода" в поле типа combobox и выполните поиск метода/свойства/класса, для которого требуется ссылка на код. Он покажет, что вам нужно для работы ссылки на сущность кода.