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

如何将库项目中的ASP.NET Core 3.0类型用于共享控制器、中间件等?,.net,asp.net-core,.net-core,csproj,asp.net-core-3.0,.net,Asp.net Core,.net Core,Csproj,Asp.net Core 3.0,虽然可以通过NuGet使用ASP.NET Core 2.2为共享控制器、中间件等创建库项目,但如何创建能够使用ASP.NET Core 3.0类型的库 对于包含视图的项目,有一个“Razor类库”(razorclasslib)模板,如何创建一个只包含逻辑组件的库?为.NET Core 3.0构建的应用程序可以引用一个或多个共享框架。ASP.NET核心是这些共享框架中的一个(其他将是基本的.NET核心共享框架和包含WinForms和WPF的Windows桌面共享框架) 要从针对.NET Core

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


对于包含视图的项目,有一个“Razor类库”(
razorclasslib
)模板,如何创建一个只包含逻辑组件的库?

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

要从针对.NET Core 3.0(
netcoreapp3.0
,而非.NET标准)的经典.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>

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


是的,这是可行的,最酷的是,如果您添加了它,并且只引用其中的一个或两个内容,那么您可以构建一个经过修剪的EXE/包,它将只选择需要的内容,而不像显式的程序集引用。我只需要一个环境,增加的足迹很小。谢谢如果库的目标是.net标准2.1,那么您就不能使用asp.net核心API,需要重新定位到netcoreapp3.0。在.NET标准中只能使用3.0版本的EF Core和Microsoft.Extensions包。