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

Mar*_*ich 18 .net csproj .net-core asp.net-core asp.net-core-3.0

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

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

Mar*_*ich 26

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

要从针对.NET Core 3.0(netcoreapp3.0而不是.NET Standard)的经典.NET Core库引用ASP.NET Core ,可以FrameworkReference在csproj中使用a 来引用框架:

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

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

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

</Project>
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中打开时,此附加框架参考将显示在解决方案资源管理器的“依赖关系”节点中:

在此处输入图片说明

  • 如果该库面向 .net 标准 2.1 该怎么办? (6认同)
  • 然后,您将无法使用asp.net核心API,而需要重新定位到netcoreapp3.0。.NET Standard中只能使用3.0版的EF Core和Microsoft.Extensions软件包。 (3认同)
  • 是的,这是行得通的,最酷的是,如果您添加它并且仅引用其中的一两个内容,则可以构建经过修剪的EXE / Package,并且仅选择所需的东西,这与显式程序集引用不同。我只需要IWebHostEnvironment,添加的空间很小。谢谢! (2认同)