ISystemClock 在 netstandard2.0 中不可用

ISystemClock not available in netstandard2.0

经过多年的开发 ASP.NET 框架,我仍然在掌握 .Net Standard 与 .Net Core 的区别。我已经建立了一个新的 Web Api "app" 目标 netcoreapp3.1 框架以及 middle-tier/Business Logic ClassLib 和 Data Access ClassLib,两者都以 .Net Standard 为最大的未来兼容性。但是,我似乎无法使用 .Net Standard classlibs!

Microsoft.AspNetCore.Authentication 命名空间中的 ISystemClock

阅读此 ,我认为这可能是因为 netstandard2.0 可能未实现 Microsoft.AspNetCore.App 框架。这是正确的吗?

如果没有,我应该:

  1. 在我的 class 库中提供我自己的 IMySystemClock 界面 "app" 本身可以实现一个简单的具体 class for?;或

  2. 将我的 class 中间层和数据访问层更改为 netcoreapp3.1 框架(似乎过度杀戮和限制这样做)?

  3. 还有别的吗?也许我错过了 .Net Standard` 的要点?

提供当前(真实或模拟)时间的服务(如 ISystemClock)似乎是一项非常基本的服务,所以我不确定为什么它没有出现在 .net 标准框架中?

谢谢 BloodBaz

如果要从库访问该功能,请将库的目标框架更改为 .NET Core 3.1。可以在 .NET Standard 或 .NET Core 中构建库。您不能在 .NET Standard 库中使用 .NET Core 功能,但您可以执行相反的操作。在 .NET Core 库中使用 .NET Standard 功能。

另请注意,除非出于兼容性原因需要,否则我建议您切换到 .NET Standard 2.1。 Visual Studio 新项目默认为 .NET Standard 2.0,但 .NET Standard 2.1 中添加了大量新功能。

我在 .NET Framework 上花了很多年,所以我感到很困惑。我花了一段时间才习惯。我有一个巨大的项目,我最近从 .NET Framework 迁移到了 .NET Standard / .NET Core。我最终做的是将我的代码分成三个部分。一个包含所有非 .NET Core 特定通用代码的 .NET Standard 2.1 库,一个包含我所有 .NET Core 特定通用代码(引用我的 .NET Standard 库)的 .NET Core 3.1 库,以及我的应用程序作为 .NET Core 3.1项目(引用了我的 .NET Core 3.1 库)。

请务必阅读此问题的答案: