Asp.net web api ASP.NET Web API帮助页为F#记录类型生成不完整的文档
ASP.NET Web API帮助页项目没有为用作Web API控制器操作的参数或结果类型的F#记录类型生成完整的文档。将列出成员,但XML注释中的摘要信息不会显示在生成的文档中。我该如何解决这个问题 例子 考虑以下F#记录类型用作Web API操作方法的参数或结果类型:Asp.net web api ASP.NET Web API帮助页为F#记录类型生成不完整的文档,asp.net-web-api,f#,visual-studio-2013,asp.net-web-api-helppages,Asp.net Web Api,F#,Visual Studio 2013,Asp.net Web Api Helppages,ASP.NET Web API帮助页项目没有为用作Web API控制器操作的参数或结果类型的F#记录类型生成完整的文档。将列出成员,但XML注释中的摘要信息不会显示在生成的文档中。我该如何解决这个问题 例子 考虑以下F#记录类型用作Web API操作方法的参数或结果类型: [] 类型ExampleRecord={ ///示例属性。 道具:int 预期产量 为此类型生成的帮助页文档应在“说明”列中包含此成员的摘要信息 Name │ Description │ Type │ A
[]
类型ExampleRecord={
///示例属性。
道具:int
预期产量
为此类型生成的帮助页文档应在“说明”列中包含此成员的摘要信息
Name │ Description │ Type │ Additional information
══════╪═══════════════════╪═════════╪═══════════════════════
Prop │ Example property. │ integer │ None.
名称│ 描述│ 类型│ 补充资料
══════╪═══════════════════╪═════════╪═══════════════════════
道具│ 示例属性。│ 整数│ 没有一个
实际产量
我们实际上看到的是,摘要信息完全没有
Name │ Description │ Type │ Additional information
══════╪═════════════╪═════════╪═══════════════════════
Prop │ │ integer │ None.
名称│ 描述│ 类型│ 补充资料
══════╪═════════════╪═════════╪═══════════════════════
道具│ │ 整数│ 没有一个
细节
此问题与以下特定技术有关:
- Microsoft ASP.NET Web API帮助页v5.1.1
- Visual Studio Professional 2013(更新1);以及
- F#3.1编译器
尽管有自己的答案,但由于我目前所得到的并不是很好的解决方案,大家都可以选择更好的解决方案。更新:未来的读者可能需要调整下面的代码。具体来说,您可能需要将
“${namespace}${namespace}${class}”
更改为“${namespace}${class}”
。不要说我没有警告你
问题的产生是因为与如何为F#记录类型生成XML文档相关的两个错误:
区域/HelpPage/XmlDocumentationProvider
中,找到具有签名的方法:
publicstringgetdocumentation(MemberInfo成员)
…并将定义替换为:
publicstringgetdocumentation(MemberInfo成员)
{
字符串选择表达式;
bool isRecord=FSharpType.isRecord(member.DeclaringType,fsharptoption.None);
国际单项体育联合会(以色列记录)
{
//VS 2013.1中缺陷的解决方法:记录类型文档中的重复命名空间。
Regex matchTypeName=newregex(@“(?(?:[\p{L}\p{Nl}]+\)*)(?[\p{L}\p{Nl}]+$”;
string classExpression=matchTypeName.Replace(GetTypeName(member.DeclaringType),“${namespace}${namespace}${class}”);
string memberExpression=string.Format(CultureInfo.InvariantCulture,“{0}.{1}”,classExpression,member.Name);
selectExpression=String.Format(CultureInfo.InvariantCulture、FieldExpression、memberExpression);
}
其他的
{
字符串表达式=member.MemberType==MemberTypes.Field?FieldExpression:PropertyExpression;
string memberName=string.Format(CultureInfo.InvariantCulture,“{0}.{1}”、GetTypeName(member.DeclaringType)、member.Name);
selectExpression=String.Format(CultureInfo.InvariantCulture、expression、memberName);
}
XPathNavigator propertyNode=\u documentNavigator.SelectSingleNode(selectExpression);
返回GetTagValue(propertyNode,“summary”);
}
这是一个非常临时的修复!如果您更新Web API帮助页面包,它将被覆盖,如果上述错误得到修复,它将破坏一切。我非常感谢您为我找到更好的解决方案