找不到XML注释文件-Swagger

Tez*_*eld 8 xml visual-studio swagger

这无疑是使您发疯的那些因素之一。正如标题所示,我只是想做的就是显示使用swagger从xml文件中提取的注释。

我似乎已经按照大手笔的文档采取了所有步骤,但无济于事。希望你好心的人可以指出我正确的方向。

采取的步骤: 在此处输入图片说明

确保文件存在:

在此处输入图片说明

已配置 SwaggerConfig.cs

在此处输入图片说明

我也尝试过更改路径:@“ bin / .... xml”

似乎没有任何作用。

**错误“找不到文件”:**

在此处输入图片说明

谁能指出我正确的方向?

问候,

小智 38

在 .net 核心 3.0 中

<GenerateDocumentationFile>true</GenerateDocumentationFile>
Run Code Online (Sandbox Code Playgroud)

在 .csproj 文件的 PropertyGroup 标签中

  • 在 .NET 7.0 中仍然有效。 (2认同)

小智 15

如异常所示,应用程序在项目的基本目录中查找 XML,而不是在“bin”文件夹中。

为什么应用程序在基本目录中搜索?看看这些行:

var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";//"G2F.Collective.Api.XML"
var commentsFile = Path.Combine(baseDirectory, commentsFileName);
Run Code Online (Sandbox Code Playgroud)

注释文件的名称配置为基目录和带有项目名称的xml的组合

c.IncludeXmlComments(commentsFile);
Run Code Online (Sandbox Code Playgroud)

最后,这条指令告诉 Swagger 使用哪个文件来获取注释,这是它在该目录中查找该文件的真正原因。

因此,最后一条指令中指示的内容必须根据项目配置的 Build 选项卡中的配置。 swagger_net_core

  • 这是完美的答案。我经常想避免手动编辑 .csproj,这解释了它的工作原理。 (2认同)

Jps*_*psy 13

这些是.Net Core 2.2中所需的步骤:

将其放在Startup.cs中:

    public void ConfigureServices(IServiceCollection services)
    {

        ...

        // Register the Swagger generator, defining 1 or more Swagger documents
        services.AddSwaggerGen(c =>
            {
                ...

                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
            });
    }
Run Code Online (Sandbox Code Playgroud)

编辑您的.csproj文件并添加/更改这些节点:

  <PropertyGroup>
    ...
    <!-- 
    Make sure documentation XML is also included when publishing (not only when testing)
    see https://github.com/Azure/service-fabric-issues/issues/190
    -->
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    ...
    <DocumentationFile>bin\$(Configuration)\YOUR_PROJECT_NAME.xml</DocumentationFile>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


Tez*_*eld 5

好的,所以我设法通过指向根目录使其工作。

我仍然不知道为什么它无法检测到 bin 目录中的 xml 文件。这再次通过在根目录中添加一个 xml 文件来实现。

代码更改:

var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
                        //var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
                        var commentsFileName = "Comments" + ".XML";
                        var commentsFile = Path.Combine(baseDirectory, commentsFileName);

                        c.IncludeXmlComments(commentsFile);
Run Code Online (Sandbox Code Playgroud)


小智 5

确保 XML Generate 配置中的项目属性与 swagger 配置文件的 XML 名称匹配。遵循印刷品以促进理解

项目属性

招摇配置


Kas*_*ela 5

我从 Microsoft 文档站点找到了以下解决方案。在“解决方案资源管理器”中右键单击该项目,然后选择“编辑 <项目名称>.csproj”。手动将突出显示的行添加到 .csproj 文件中:

<PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)