Использовать Microsoft.AspNetCore.Identity в. Net Стандартный проект? - PullRequest
2 голосов
/ 24 января 2020

Я собираюсь перенести устаревший код (. 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

1 Ответ

1 голос
/ 24 января 2020

Стандарт. NET - это спецификация, которой должны соответствовать все реализации. NET. Это было введено для стандартизации. NET реализаций.

Итак, если вы обратитесь к документации , вы сможете узнать, какие реализации NET поддерживаются .NET standard 2.0, а какие NET поддерживаются .NET Standard 2.1.

Теперь ваш вопрос: можете ли вы использовать Microsoft.AspNetCore.Identity пакет в .NET Standard 2.0 проекте.

Вы можете использовать его, пока. NET реализации, на основе которых вы будете строить свой код, подтверждают .NET Standard 2.0

Согласно этой ссылке , Microsoft.AspNetCore.Identity v2.2.0 предназначен для. NET Стандарт 2.0, поэтому вы сможете использовать это в своем проекте.

Обратите внимание, .NET Framework не будет поддерживать .NET Standard 2.1 или более поздние версии. Подробнее см. объявление. NET Стандарт 2.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...