我在这里有点困惑:我刚刚遇到一个引用.NET Core 2.2类库的.NET框架4.7.2 Web API.这怎么能起作用?

enter image description here

enter image description here

感谢您的澄清.

推荐答案

How can this work?

好吧,那是很久以前的事了,就我个人而言,我还没有使用过这个功能,所以我忘记了这一点:ASP.NET Core 3.0版本可以针对.NET框架.来自Overview of ASP.NET Core: ASP.NET Core targeting .NET Framework文档:

ASP.NET Core 2.x可以针对.NET Core或.NET框架.针对.NET框架的ASP.NET核心应用程序不是跨平台的-它们仅在Windows上运行.通常,ASP.NET Core 2.x由.NET标准库组成.用.NET Standard 2.0编写的库在任何实现.NET Standard 2.0的.NET平台上运行.

实现.NET Standard 2.0的.NET框架版本支持ASP.NET Core 2.x:

  • 建议使用.NET框架最新版本.
  • .NET框架4.6.1或更高版本. ASP.NET Core 3.0或更高版本仅在.NET Core上运行.有关此更改的更多详细信息,请参阅第changes coming in ASP.NET Core 3.0页.
How can a .NET Framework 4.7.2 project reference .NET Core 2.2 libraries?

事实并非如此.正如您从引言中看到的那样-该项目引用的不是.NET Core 2.2库,而是.NET Standard库,因为ASP.NET Core的目标是.NET Standard.

附言

  1. 我猜为什么该项目使用它-一些重要的库仅支持.NET框架,因此决定使用该运行时运行.

  2. 无论哪种方式.NET Core 2.2早已不再支持(2019年12月23日),根据ASP.NET Core也是如此(Microsoft.AspNetCore包已被弃用,自2018年3月12日以来就没有更新过),因此如果可能的话,我强烈建议迁移到最新版本的ASP.NET Core(和.NET Core运行时).

Csharp相关问答推荐

在Microsoft XNA框架(MonoGame)中旋转相机

有没有方法让ASP.NET Core模型绑定器使用私有设置器来设置属性?

C#中使用BouncyCastle计算CMac

`Task`只有在C#中等待时才会运行吗?

为什么SignalR在每个Blazor服务器应用程序启动时最多启动8个服务器?

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

在此系统上已禁用获取正在运行的脚本.&在ASP.NET Core Web API中

共享暂存/生产环境中Azure事件中心的建议配置

如何使用MailKit删除邮箱?

使用Entity Framework6在对象中填充列表会导致列表大多为空

FakeItEasy自动嘲弄内容

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

C#中使用ReadOnlySpan的泛型类型推理

try 访问字典中的模拟对象时引发KeyNotFoundException

使用postman 测试配置了身份的.NET 6应用程序

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

我什么时候不应该在Dispose中调用EgSuppressFinalize(This)?

在C#中删除多个不同名称的会话

.NET6最小API:操作.MapGet之后的响应

异步等待,如何在Windows窗体中使用它们?