我如何使用库项目中的 ASP.NET Core 3.0 类型来共享控制器、中间件等?

How do I use ASP.NET Core 3.0 types from a library project for shared Controllers, Middleware etc?

虽然可以通过 NuGet 使用 ASP.NET Core 2.2 来为共享控制器、中间件等创建库项目,但如何创建能够使用 ASP.NET Core 3.0 类型的库?

虽然对于包含视图的项目有一个 "Razor Class Library" (razorclasslib) 模板,但我如何创建一个仅包含逻辑组件的库?

为 .NET Core 3.0 构建的应用程序可以引用一个或多个共享框架。 ASP.NET Core 是这些共享框架之一(其他框架是基础 .NET Core 共享框架和 Windows 包含 WinForms 和 WPF 的桌面共享框架)。

要从面向 .NET Core 3.0(netcoreapp3.0,而非 .NET Standard)的经典 .NET Core 库中引用 ASP.NET Core,您可以在 csproj 中使用 FrameworkReference参考框架:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

在 Visual Studio 中打开时,此附加框架引用将显示在解决方案资源管理器的依赖项节点中: