Страница справки Web Api - все <see cref = "MyClass" /> отсутствуют

В документации по исходному коду я часто использую:

Get a <see cref="Quote"/> for the specified <see cref="apiOrder"/> object.

И это красиво переводится в строку ниже в файле XmlDocument.xml, который содержит скомпилированные страницы справки веб-API.

Get a <see cref="T:Supertext.API.POCO.Quote"/> for the specified <see cref="!:apiOrder"/> object.

Но по некоторым причинам все эти ссылки не отображаются. Что мы получаем, это:

Get a  for the specified  object

Мы нашли несколько источников, но, похоже, ничего не работает. Не помогает:
Страница помощи Web Api - не избегайте HTML в документации XML

Устаревшие:
http://thesoftwaredudeblog.wordpress.com/2014/01/04/using-microsoft-asp-net-web-api-2-help-page-part-2/

Есть идеи?

1 ответ

В справке WebAPI 2 есть класс с именем XmlDocumentationProvider, В этом классе есть метод с именем, GetTagValue который обрабатывает теги Summary и Returns. Существует также метод с именем GetDocumentation (есть несколько, но это тот, с HttpParameterDescriptor параметр), который обрабатывает теги Param.

Я написал функцию, которая использует RegEx, чтобы найти все "See Cref" и заменить их последним найденным именем объекта.

RegEx:

private static Regex SeeCodeReferenceRegEx = new Regex("<see cref=\\\"\\w:([\\w]+\\.)*(\\w+)\\\" */>", RegexOptions.Compiled);

Функция:

private static string CleanValue(string value)
{
    value = value.Trim();
    var matches = SeeCodeReferenceRegEx.Matches(value);
    foreach (Match match in matches)
        value = value.Replace(match.Groups[0].Value, match.Groups[2].Value);
    return value;
}

В GetTagValue, замените:

return node.Value.Trim();

с:

return CleanValue(node.InnerXml);

В GetDocumentation заменить:

return parameterNode.Value.Trim();

с:

return CleanValue(parameterNode.InnerXml);
Другие вопросы по тегам