【问题标题】:VS 2017 WebAPI Help Page - No Document ProvidedVS 2017 WebAPI 帮助页面 - 未提供文档
【发布时间】:2018-06-13 18:45:40
【问题描述】:

我已按照MSDN 和其他 SO 问题中的步骤设置文档并在帮助页面的描述部分显示 XML cmets。但是,当我尝试构建或运行项目时收到错误消息。 Visual Studio 2017 在属性中不再有“构建”选项。它已被“编译”部分取代。虽然此部分确实有“生成 XML 文档文件”选项,但它没有 XML 文档文件位置选项(如 MSDN 说明中的说明)。话虽如此,我们知道 XmlDocumentProvider 正在 HelpPageConfig.vb 文件中寻找“~/App_Data/XmlDocument.xml”。

首先,当我运行项目时,它返回“未提供文档”错误,因为那里没有文档。当我在 App_Data 文件夹中创建 XML 文档“XMLDocument.xml”时,会返回一个错误,提示“未找到根元素”。添加根元素后不返回错误;但是,帮助页面中也没有显示说明。

设置:

  • 确认 AreaRegistration.RegisterAllAreas() 在 Application_Start 中
  • HelpPageConfig.vb 中未注释 config.SetDocumentationProvider
  • 为所有控制器添加了 cmets

我试过了:

  • 将复制设置为输出目录:如果较新则复制
  • 各种根元素名称(描述、评论、根等)

有谁知道根元素应该是什么,或者是否有办法让 VS 2017 在文件不存在时自动生成文件?

【问题讨论】:

    标签: xml vb.net visual-studio-2017 asp.net-web-api-helppages


    【解决方案1】:

    我知道这个答案来得太晚了,但我遇到了同样的问题。我无法让 Visual Studio 2017 将 XML 文档文件输出到建议的 ~/App_Data/XmlDocument.xml 位置。

    但是,我发现在~/bin/<project name>.xml下生成了正确的文件。所以如果你的项目是“TestWebAPI2”,那么这个文件应该是~/bin/TestWebAPI2.xml

    (我没看到有没有办法把这个文件移动/复制到~/App_Data,不过找了很久没找)

    要使其正常工作,请转到 ~/Areas/HelpPage/App_Start/HelpPageConfig.vb 并更改以下行以适合:

    config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))
    

    变成

    config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/<yourprojectname>.xml")))
    

    (不要忘记将&lt;yourprojectname&gt; 替换为您的 WebAPI2 项目名称

    【讨论】:

      【解决方案2】:

      你可以正确地做到这一点

      1) 如果您没有 App_Data 文件夹,请通过右键单击添加它 解决方案资源管理器中的项目,然后添加 |添加 Asp.Net 文件夹 | App_Data

      2) 转到项目属性的构建部分。在输出下,检查 XML 文档文件。在编辑框中,键入 "App_Data/XmlDocument.xml"

      说明可以在这个link找到

      .

      【讨论】:

        【解决方案3】:

        API 帮助不显示正文参数说明。 在类属性中缺少描述信息。 只需将 DescriptionAttribute 添加到属性:

            [Description("Simple description")]
            public string Text { get; set; }
        

        这是我的解决方法:

                    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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-08
          • 1970-01-01
          • 1970-01-01
          • 2016-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多