首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET内核中的Swagger中包含XML注释文件

如何在ASP.NET内核中的Swagger中包含XML注释文件
EN

Stack Overflow用户
提问于 2017-06-20 03:04:55
回答 7查看 42.8K关注 0票数 20

我需要Swagger生成API文档,包括UI来测试操作。

在我的项目中使用ASP.NET时,会生成deps XML文件,一切正常,如下所示:

但是,当我在我的项目中使用ASP.NET核心时,deps文件不会生成。它只生成我的项目注释XML文件,如下所示:

当我将项目部署到IIS时,项目XML不在部署文件列表中。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-06-20 06:54:21

为您所依赖的每个项目启用"XML文档文件“复选框,以便在构建时生成它们的文件。它可以在项目的属性构建选项卡上完成。

若要包含部署中的所有XML文件,请将此目标添加到已发布项目的csproj文件中:

代码语言:javascript
复制
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <ItemGroup>
        <DocFile Include="bin\*\*\*.xml" />
    </ItemGroup>
    <Copy SourceFiles="@(DocFile)" 
          DestinationFolder="$(PublishDir)" 
          SkipUnchangedFiles="false" />
</Target>

这将将所有XML文件从bin文件夹和嵌套子文件夹(如bin\Release\netcoreapp1.1\)复制到publish dir。当然,您可以定制该目标。

票数 15
EN

Stack Overflow用户

发布于 2018-12-21 14:39:57

对于.Net Core 2到3.1版本,略有不同,对于使用较新版本的人来说,您将创建private void ConfigureSwagger(IServiceCollection services)构造函数,添加对swagger services.AddSwaggerGen(c => { c.SwaggerDoc(/*populate with your info */);的引用,然后定义一个新参数,这将是swagger文档的路径:var filePath = Path.Combine(AppContext.BaseDirectory, "YourApiName.xml"); c.IncludeXmlComments(filePath);

它应该是这样的:

代码语言:javascript
复制
private void ConfigureSwagger(IServiceCollection services)
    {
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "YourApiName",
                Description = "Your Api Description.",
                TermsOfService = "None",
                Contact = new Contact
                    {Name = "Contact Title", Email = "contactemailaddress@domain.com", Url = ""}
            });
            var filePath = Path.Combine(AppContext.BaseDirectory, "YourApiName.xml");
            c.IncludeXmlComments(filePath);
        });
    }

为此,您需要确保检查了文档文件(参见红色箭头)并适当设置了生成的输出。我注意到您可以删除预填充的路径,只需使用bin\YourApiName.xml,如下所示:

更新:如果这些更改不像预期的那样工作,请检查配置。在本例中,配置设置为Debug。如果您从不同的环境( env )运行,则可能需要检查这些设置是否适用于该env。

更新2:自从OpenAPI发布以来,我想我应该更新我的示例(下面),以显示对本规范的更准确的引用,它应该遵循以下类似的内容:

代码语言:javascript
复制
services.AddSwaggerGen(o =>
            {
                o.SwaggerDoc("v1",
                    new OpenApiInfo
                    {
                        Title = "Your API Name",
                        Description = "Your API Description",
                        Version = "v1",
                        TermsOfService = null, 
                        Contact = new OpenApiContact 
                        {
                            // Check for optional parameters
                        },
                        License = new OpenApiLicense 
                        {
                            // Optional Example
                            // Name = "Proprietary",
                            // Url = new Uri("https://someURLToLicenseInfo.com")
                        }
                    });
            });
票数 31
EN

Stack Overflow用户

发布于 2020-09-16 09:48:23

我使用这种方式注册XML文件:

代码语言:javascript
复制
  foreach (var filePath in System.IO.Directory.GetFiles(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)), "*.xml"))
                {
                    try
                    {
                        c.IncludeXmlComments(filePath);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44643151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档