Я собираюсь перенести устаревший код (. Net framework) в. Net Standard (2.0, Not 2.1, чтобы он все еще был совместим с Framework 4.7 и Core 3.0). Старые библиотеки используют System.Web.Security
для доступа к базе данных (User and Membership et c.). Я уже изменил это на новую модель IdentityServer4.
Мой вопрос для этой проблемы: Могу ли я использовать Microsoft.AspNetCore.Identity
в .Net Standard
проекте?
Я прочитал некоторые обсуждения по Git и был сбит с толку. Очевидно, есть разница в .Net standard
2.0 и 2.1, но NUGET позволяет мне установить «Microsoft.AspNetCore.Identity» для .Net Standard 2.0
.
Я хочу знать это, потому что это немного упростит миграцию, "просто" заменив старые классы новыми классами в Microsoft.AspNetCore.Identity
. В противном случае мне нужно удалить все удостоверения, связанные с. Net Стандартными библиотеками.
К сожалению, я не могу использовать .Net Core 3.0
для библиотек, поскольку библиотеки Lib необходимо использовать в приложении WebForms (. Net Framework 4.7).
Редактировать 1: спасибо за ответы. Это уже помогло мне. Но у меня есть следующий вопрос:
Меня смущает то, что я буду использовать эти библиотеки в приложении WebForms, и я прочитал кое-что о старых Frameworks, не поддерживающих новую модель идентификации, как pnet ядро. В качестве примера: Могу ли я использовать класс ApplicationUser внутри пользовательской стандартной библиотеки. Net в коде, стоящем позади приложения WebForms (в случае, когда все User-Management обернуты в отдельный. Net Standard Dll )?
Редактировать 2: Вот обсуждение, которое меня раздражало: https://github.com/dotnet/aspnetcore/issues/3756#issuecomment -434114175 относительно поддержки "Microsoft.AspNetCore.Identity" в. Net Стандарт (даже пространство имен «Microsoft. AspNetCore .Identity» заставило меня думать, что он не должен работать. Net Стандарт)
Редактировать 3: Итак Я пытался использовать Microsoft.AspNetCore.Identity для использования «IdentityUser» в. Net стандартной библиотеке. Оказывается, EntityFramework нужно добавить в ссылки, и я получаю эту ошибку.
Пакет 'EntityFramework 6.1.0' был восстановлен с использованием '.NETFramework, Версия = v4.6.1, .NETFramework, Версия = v4.6.2, .NETFramework, Версия = v4.7, .NETFramework, Версия = v4 .7.1, .NETFramework, Version = v4.7.2, .NETFramework, Version = v4.8 'вместо целевой платформы проекта' .NETStandard, Version = v2.0 '. Этот пакет может быть не полностью совместим с вашим проектом.
Как это исправить: Для. Net Standard 2.0 установить Microsoft.Extensions.Identity.Stores. А для. Net Standard 2.1 это может быть установлено Microsoft.AspNetCore.Identity.EntityFrameworkCore