【问题标题】:Use Microsoft.AspNetCore.Identity in .Net Standard Project?在 .Net 标准项目中使用 Microsoft.AspNetCore.Identity?
【发布时间】:2020-01-24 14:50:13
【问题描述】:

我即将将遗留代码(.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”。

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

很遗憾,我不能将 .Net Core 3.0 用于库,因为库需要在 WebForms 应用程序 (.Net Framework 4.7) 中使用。

编辑 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 也需要添加到引用中,我得到了这个错误。

使用“.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, 恢复包“EntityFramework 6.1.0”, .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

【问题讨论】:

  • 你测试过这个吗?尝试一个简单的例子请也看看这里 -> stackoverflow.com/questions/59644282/…。非常类似于您所说的不是 asp.net 身份和这里 -> github.com/dotnet/announcements/issues/31 和这里 stackoverflow.com/questions/53225028/…
  • Microsoft.AspNetCore.Identity 本身是一个 .NET Standard 2.0 项目,所以是的,您可以在任何其他 .NET Standard 2.0 项目中使用。所有 .NET Core 扩展都是 .NET Standard,这意味着您也可以在 .NET Framework 项目中轻松使用它们
  • 非常感谢,我去看看。让我感到困惑的是,我将在 WebForms 应用程序中使用这些库,并且我读到一些旧框架不支持 aspnet 核心的新身份模型的东西。例如:我可以在 WebForms 应用程序的代码背后的自定义 .Net 标准库中使用“ApplicationUser”类吗?
  • @user3675331 是的,这就是测试它的方法,不是吗?除非你想要不同的东西。

标签: c# asp.net-core asp.net-identity .net-standard


【解决方案1】:

.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.

【讨论】:

猜你喜欢
  • 2018-03-29
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
相关资源
最近更新 更多