我即将将遗留代码(.Net 框架)迁移到 .Net Standard(2.0,不是 2.1,以便它仍然与 Framework 4.7 和 Core 3.0 兼容)。旧图书馆正在使用 System.Web.Security
访问数据库(用户和成员(member)等)。我已经使用 IdentityServer4 将其更改为新的 Identity 模型。
我对此问题的问题:
我可以用Microsoft.AspNetCore.Identity
在 .Net Standard
项目?
我读了一些关于 Git 的讨论,但很困惑。显然 .Net standard
有区别2.0 和 2.1,但 NUGET 允许我为 .Net Standard 2.0
安装“Microsoft.AspNetCore.Identity” .
我想知道这一点,因为这会让迁移更容易一些,只需在 Microsoft.AspNetCore.Identity
中用新类替换旧类即可。 .否则,我需要删除 .Net 标准库中与身份相关的所有内容。
不幸的是我不能使用 .Net Core 3.0
对于库,因为需要在 WebForms 应用程序(.Net Framework 4.7)中使用 Libs。
编辑 1:感谢您的答复。那已经帮助了我。
但我有一个后续问题:
让我感到困惑的是,我将在 WebForms 应用程序中使用这些 Lib,并且我阅读了一些关于不支持 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:
因此,我尝试使用 Microsoft.AspNetCore.Identity 在 .Net 标准库中使用“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 实现.
现在,您的问题:你能用吗Microsoft.AspNetCore.Identity
包裹在 .NET Standard 2.0
项目。
只要您将构建代码所针对的 .NET 实现向 .NET Standard 2.0
确认,您就可以使用它。
根据 this link , Microsoft.AspNetCore.Identity v2.2.0
面向 .NET Standard 2.0,因此您可以在您的项目中使用它。
请注意 .NET Framework
不支持 .NET Standard 2.1
或更高版本。更多详情请见the announcement of .NET Standard 2.1.
关于c# - 在 .Net 标准项目中使用 Microsoft.AspNetCore.Identity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898769/