我构建了一个C#应用程序,我的目标框架是.NET框架4.72。当我使用TDengine C#连接器时,它的目标框架是.NET标准2.1和.NET 5。
当我在项目中引用这些包时,我总是在构建时得到一个错误,它说方法封送。
Marshal.StringToCoTaskMemUTF8(字符串)
不在4.7.2框架中。
我很困惑,因为在我看来,4.7.2应该是一个比.NET 5更低的版本,而且应该是兼容的。
那么,.NET标准和.NET框架.NET 5、6、7之间有什么区别呢?这些名字总是让我感到困惑。有没有人知道如何区分它们,或者推荐一些文章来帮助我了解它们。
发布于 2022-05-14 13:16:57
是啊,这太让人困惑了!
.NET核心是对.NET框架的重写,目的是使其独立于平台。它与经典的.NET框架(.NET一直到4.8版)有许多不兼容之处。版本5和更新版本中的.NET更新版本都是基于核心分叉,因此在4.8之前与旧版本不完全兼容。
.NET标准试图创建一个兼容于所有版本的公共子集。因此,如果您按照.NET标准编程,您的代码将与4.8分支和核心分支一起工作。不幸的是,通过制作一个与.NET 4.8不兼容的版本,MS搞砸了这一点。他们这么做可能是出于对.NET开发人员的不满。
主要的.NET框架版本:
.NET框架1.0 -> .NET Framework 2.0 -> .NET Framework3.0 -> .NET Framework3.5 -> .NET Framework4.0 -> .NET Framework4.8
主要.NET核心版本:
.NET Core 1 -> .NET core 2 -> .NET Core 3 -> .NET 5 -> .NET 6
发布于 2022-05-14 13:11:34
由于这确实令人困惑,我最近努力想办法解决这个问题。以下是我想出的:
.NET与.NET核心是.NET框架的继承者。
从版本5开始,.NET Core只被称为.NET:
.NET框架从1.0版运行到4.8版,版本号不能分别与.NET Core或.NET的版本号进行比较。
.NET标准本身并不是一个框架或平台。它只是为.NET实现设置了“符合.NET标准”的规范(标准)。这里您可以看到不同的.NET标准版本以及它们支持的.NET实现和版本的列表。
https://stackoverflow.com/questions/72240269
复制相似问题