IApplicationBuilder扩展方法在类库中的用法

问题描述

我正在尝试编写自定义运行状况检查并将其放入Nuget中以供重用。为了使应用程序(.netcore 3.1)使用此运行状况检查,需要调用

   appBuilder.UseEndpoints(endpoints =>
                        {
                            endpoints.MapHealthChecks("/health",new HealthCheckOptions
                            {
                                ResultStatusCodes =
                                {
                                    [HealthStatus.Healthy] = StatusCodes.Status200OK,[HealthStatus.Degraded] = StatusCodes.Status200OK,[HealthStatus.Unhealthy] = StatusCodes.Status503ServiceUnavailable
                                },AllowCachingResponses = false,ResponseWriter = HealthCheckResponseWriter.WriteResponse
                            });
                        });

以及ConfigureServices中的其他调用。 我想将这部分代码移到我的nuget中,但是遇到的不是真正了解我需要使用什么Nuget才能在类库中同时使用IApplicationBuilder和UseEndpoints扩展方法?事实证明,使用.NET.Sdk.Web的其他应用程序可以做到这一点,而对于类库则没有任何问题。看起来它所需的所有依赖项都隐式地添加到了Web sdk中,但是如何确定应该添加什么到类库中呢?

解决方法

我已经解决了这个问题。

随着.NET Core 3.0的发布,许多ASP.NET Core程序集不再作为程序包发布到NuGet。而是,程序集包含在Microsoft.AspNetCore.App共享框架中,该框架随.NET Core SDK和运行时安装程序一起安装。有关不再发布的软件包列表,请参阅删除过时的软件包引用。

从.NET Core 3.0开始,使用Microsoft.NET.Sdk.Web MSBuild SDK的项目隐式引用了共享框架。使用Microsoft.NET.Sdk或Microsoft.NET.Sdk.Razor SDK的项目必须引用ASP.NET Core才能在共享框架中使用ASP.NET Core API。

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/target-aspnetcore?view=aspnetcore-3.1&tabs=visual-studio