I have followed the steps at MSDN, and other SO questions, to setup documenting and to have the XML comments show in the descriptions section of the help page. However, I am
You can do this properly by
1) If you don't have an App_Data folder, add it by right clicking on the project in Solution Explorer, then Add | Add Asp.Net Folder | App_Data
2) Go to the Build section of Project Properties. Under Output, check XML documentation file. In the edit box, type "App_Data/XmlDocument.xml"
Instructions can be found in this link
.
I know this answer comes very late, but I ran into the same problem. I could not get Visual Studio 2017 to output the XML Documentation file to the suggested ~/App_Data/XmlDocument.xml
location.
However, I found that the correct file is generated under ~/bin/<project name>.xml
. So if your project is "TestWebAPI2", then this file should be ~/bin/TestWebAPI2.xml
.
(I couldn't see if there was a way to move/copy this file to ~/App_Data
, but I didn't look for a very long time)
To get this working, go to ~/Areas/HelpPage/App_Start/HelpPageConfig.vb and change the following line to suit:
config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))
becomes
config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/<yourprojectname>.xml")))
(don't forget to replace <yourprojectname>
with your WebAPI2 project name)
API help not show Body Parameters descriptions. In class properties missing description info. Just add DescriptionAttribute to property:
[Description("Simple description")]
public string Text { get; set; }
This is my fix:
public string GetDocumentation(MemberInfo member)
{
string memberName = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", GetTypeName(member.DeclaringType), member.Name);
string expression = member.MemberType == MemberTypes.Field ? FieldExpression : PropertyExpression;
string selectExpression = String.Format(CultureInfo.InvariantCulture, expression, memberName);
XPathNavigator propertyNode = _documentNavigator.SelectSingleNode(selectExpression);
var result = GetTagValue(propertyNode, "summary") ?? GetDescription(member);
return result;
}
private static string GetDescription(MemberInfo memberInf)
{
var result = (memberInf.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute)?.Description;
return result;
}
screenshot