在 .Net 标准项目中使用 Microsoft.AspNetCore.Identity?

Use Microsoft.AspNetCore.Identity in .Net Standard Project?

我准备将遗留代码(.Net 框架)迁移到 .Net 标准(2.0,而不是 2.1,以便它仍然与 Framework 4.7 和 Core 3.0 兼容)。旧图书馆使用 System.Web.Security 访问数据库(用户和成员资格等)。我已经使用 IdentityServer4 将其更改为新的身份模型。

本期我的问题: 我可以在 .Net Standard 项目中使用 Microsoft.AspNetCore.Identity 吗?

我在 Git 上阅读了一些讨论,感到很困惑。显然 .Net standard 2.0 和 2.1 有所不同,但 NUGET 允许我为 .Net Standard 2.0 安装 "Microsoft.AspNetCore.Identity"。

我想知道这个,因为 "just" 用 Microsoft.AspNetCore.Identity 中的新 类 替换旧的 类 会使迁移更容易一些。否则,我需要删除 .Net 标准库中与身份相关的所有内容。

不幸的是,我无法将 .Net Core 3.0 用于库,因为库需要在 WebForms 应用程序 (.Net Framework 4.7) 中使用。

编辑 1: 感谢您的回复。那已经帮助了我。 但我有一个后续问题:

让我感到困惑的是,我将在 WebForms 应用程序中使用这些库,并且我阅读了一些关于不支持 aspnet 核心的新身份模型的旧框架的信息。例如:我可以在 WebForms 应用程序的代码隐藏中的自定义 .Net 标准库中使用 "ApplicationUser"-Class 吗(在我将所有用户管理包装在单独的 .Net 中的情况下)标准 Dll)?

编辑 2: 以下是激怒我的讨论:https://github.com/dotnet/aspnetcore/issues/3756#issuecomment-434114175 关于 .Net Standard 中的 "Microsoft.AspNetCore.Identity" 支持(甚至命名空间 "Microsoft.AspNetCore.Identity" 让我觉得它不应该在 .Net Standard 上工作)

编辑 3: 因此,我尝试在 .Net 标准库中使用 Microsoft.AspNetCore.Identity 来使用 "IdentityUser"。原来 EntityFramework 也需要添加到参考文献中,我得到了这个错误。

包 'EntityFramework 6.1.0' 已使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=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

.NET 标准是所有 .NET 实现都应遵守的规范。这是为了标准化 .NET 实现而引入的。

因此,如果您 refer the documentation,您将能够知道 .NET standard 2.0 支持哪些 .NET 实现以及 .NET Standard 2.1 支持哪些 .NET 实现。

现在,你的问题: 你能在 .NET Standard 2.0 项目中使用 Microsoft.AspNetCore.Identity 包吗?

只要您构建代码所针对的 .NET 实现确认 .NET Standard 2.0

,您就可以使用它

根据 this linkMicrosoft.AspNetCore.Identity v2.2.0 针对 .NET Standard 2.0,因此您可以在您的项目中使用它。

请注意 .NET Framework 不支持 .NET Standard 2.1 或更高版本。有关详细信息,请参阅 the announcement of .NET Standard 2.1.