Как использовать типы ASP.NET Core 3.0 из библиотечного проекта для общих контроллеров, промежуточного программного обеспечения и т.д.?

Хотя ASP.NET Core до 2.2 можно использовать через NuGet для создания проектов библиотек для совместно используемых контроллеров, промежуточного программного обеспечения и т.д., Как мне создать библиотеку, способную использовать типы ASP.NET Core 3.0?

Хотя для проектов, содержащих представления, существует шаблон "Библиотека классов Razor" (razorclasslib), как мне создать библиотеку, которая содержит только логические компоненты?

Ответ 1

Приложения, созданные для .NET Core 3.0, могут ссылаться на одну или несколько общих платформ. ASP.NET Core является одной из этих общих платформ (другие могут быть базовой платформой .NET Core Shared и платформой Windows Desktop Shared Framework, содержащей WinForms и WPF).

Чтобы ссылаться на ASP.NET Core из классической библиотеки .NET Core, ориентированной на .NET Core 3.0 (netcoreapp3.0, а не .NET Standard), вы можете использовать FrameworkReference в csproj для ссылки на платформу:

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

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

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

</Project>

При открытии в Visual Studio эта дополнительная ссылка на структуру будет отображаться в узле зависимостей в обозревателе решений:

enter image description here