.NET Core 和 .NET 标准类库项目类型有什么区别?
在 Visual Studio 中,至少可以创建三种不同类型的类库:
- 类库(.NET Framework)
- 类库(.NET 标准)
- 类库 (.NET Core)
虽然第一种是我们多年来一直在使用的,但一直感到困惑的一个主要问题是何时使用 .NET Standard 和 .NET Core 类库类型。
那么,类库(.NET Standard)和类库(.NET Core)之间有什么区别,为什么两者都存在,什么时候应该使用其中一个?
类库(.NET Standard)和类库(.NET Core)有什么区别?
.NET Standard 是一个标准(换句话说,是一个规范),主要目的是改善代码共享并使每个 .NET 实现中可用的 API 更加一致。.NET Standard 的基础架构库和共享库,可供 .NET Framework 和 .NET Core 引用。
.NET Framework 用于不支持的技术,例如 Active Report、Window Services(现在支持 .NET 3.0)。
您可以使用 .NET Framework 和 .NET Core 创建可执行项目(如控制台应用程序或 ASP.NET 应用程序),但不能使用 .NET Standard 创建。
使用 .NET Standard,您只能创建一个不能独立执行的类库项目,而应该由另一个 .NET Core 或 .NET Framework 可执行项目引用。
我们什么时候应该使用其中一个?
该决定是兼容性和 API 访问之间的权衡。
当您想要增加与您的库兼容的应用程序数量时,请使用 .NET 标准库,并且您可以接受库可以访问的 .NET API 的减少。
当您想要增加库可以访问的 .NET API 时,请使用 .NET Core 库,并且可以只允许 .NET Core 应用程序与您的库兼容。
例如,以 .NET Standard 1.3 为目标的库将与以 .NET Framework 4.6、.NET Core 1.0、Universal Windows Platform 10.0 和任何其他支持 .NET Standard 1.3 的平台为目标的应用程序兼容。但是,该库将无法访问 .NET API 的某些部分。例如,该 Microsoft.NETCore.CoreCLR包与 .NET Core 兼容,但不与 .NET Standard 兼容。
.NET 标准库将为您提供什么功能(跨框架兼容性)
实现 .NET 标准库允许跨所有这些不同风格共享代码:

- .NET Standard 通过在您需要的环境中提供您期望和喜爱的所有 API,解决了所有平台上 .NET 开发人员的代码共享问题:桌面应用程序、移动应用程序和游戏以及云服务:
- .NET 标准 是所有.NET 平台都必须实现的一组 API。这统一了 .NET 平台并防止了将来的分裂。
- .NET Standard 2.0 将由.NET Framework、.NET Core和Xamarin实现。对于.NET Core,这将添加许多已请求的现有 API。
- .NET Standard 2.0 包含.NET Framework二进制文件的兼容性垫片,显著增加了您可以从 .NET Standard 库中引用的库集。
- .NET 标准 将取代可移植类库 (PCL) 作为构建多平台 .NET 库的工具。
为什么两者都存在?
.NET Standard 存在的原因是为了可移植性;它定义了一组 .NET 平台同意实现的 API。任何实现 .NET 标准的平台都与针对该 .NET 标准的库兼容。这些兼容平台之一就是 .NET Core。
.NET Standard 库模板是为了在多个运行时上运行而存在的(以牺牲 API 覆盖范围为代价)。相反,.NET Core 库模板是为了访问更多的 API 覆盖范围(以牺牲兼容性为代价)并指定构建可执行文件的平台而存在的。
.NET Core 和 .NET 标准类库项目类型有什么区别?的更多相关文章
- Python 标准类库-日期类型之datetime模块
标准类库-日期类型之datetime模块 by:授客 QQ:1033553122 可用类型 3 实践出真知 4 timedelta对象 4 class datetime.timedelta(da ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- .NET Core 3.0或3.1 类库项目中引用 Microsoft.AspNetCore.App
本文为原创文章.首发:http://www.zyiz.net/ 在 ASP.NET Core 3.0+ web 项目中已经不需要在 .csproj 中添加对 Microsoft.AspNetCore. ...
- asp.net core 2.0类库项目读取配置文件
1.首先在类库项目中添加 这3个库. 2.在类库项目中添加AppSetting.cs.代码如下: using Microsoft.Extensions.Configuration;using Syst ...
- Asp.Net Core 轻松学系列-3项目目录和文件作用介绍
目录 前言 结语 前言 上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core M ...
- .Net Core新建解决方案,添加项目引用,使用VSCode调试
并不是我自己琢磨的,是看了别人学习的,因为写的都不完整,所以就整理一下记录后面忘了回看. 反正.Net Core是跨平台的,就不说在什么系统上了.假设我要建一个名为Doggie的解决方案,里面包含了一 ...
- IHostingEnvironment VS IHostEnvironment - .NET Core 3.0中的废弃类型
原文: https://andrewlock.net/ihostingenvironment-vs-ihost-environment-obsolete-types-in-net-core-3/ 作者 ...
- 在 VS 类库项目中 Add Service References 和 Add Web References 的区别
原文:在 VS 类库项目中 Add Service References 和 Add Web References 的区别 出身问题: 1.在vs2005时代,Add Web Reference(添加 ...
- WinForm加载外部类库项目的集成开发模式
在项目开发中有一定的团队用到了Nuget.Coding:但是这用起来还是不太方方便,在Winform中呢,我们可以把一个人的项目当作一个类库项目,因为它生成的是一个dll文件,也就是单一文件,拥有了它 ...
- Python 标准类库 - 因特网协议与支持之socketserver
标准类库 - 因特网协议与支持之socketserver by:授客 QQ:1033553122 socketserver 模块,简化网络服务编写任务. 创建服务的步骤 1 通过子类化BaseReq ...
随机推荐
- python基础-元组-集合-字典
元组 概念 元组:由一系列变量组成的不可变序列容器 序列:支持索引和切片 不可变:1.没有增删改的方法 2.所有的操作都不会直接作用于原数据 定义 <span style="font- ...
- 从“技术宅”到"机器人教父",那个用机器人改变世界的年轻人
写在前面 随着民营企业座谈会的召开,有一位年轻的企业家王兴兴映入了我们的视野.没错就是那个让机器人从实验室走向舞台中央的年轻人. 大家对今年春晚的机器人扭秧歌应该都还印象深刻吧,它就出自于王兴兴创办的 ...
- springboot 2.1.6.RELEASE整合Swagger2
一.引入依赖 1 <modelVersion>4.0.0</modelVersion> 2 <groupId>com.badcat</groupId> ...
- 【记录】C-文件输入输出
写在开头 摸鱼摸得昏天黑地,是该炸一炸鱼的本愿了~ 以前总觉得笔记没什么重要的,但有时事到临头,又十分渴求简明的提纲来唤起记忆/提供重学的门路.于是就有了以下的产物,也希望能抑制一下无效摸鱼的堕落 ...
- 迅速理解 LCS 最长公共子序列问题
在算法与数据结构的经典问题中,最长公共子序列(Longest Common Subsequence,简称 LCS)问题占据着重要的地位.给定两个序列,我们需要找到它们最长的公共子序列,而子序列要求保持 ...
- Linux 安装 MySQL 8.0
目录 下载 安装数据库 修改mysql配置文件(若没有则新建) 安装并初始化mysql 查看mysql密码 配置启动 登录MySQL 修改密码 配置远程连接 配置防火墙 常见错误 Windows 安装 ...
- 修改docker的默认存储位置及镜像存储位置
前言 Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等. 不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了 ...
- 【Vue3】下载zip文件损坏的问题
需求: 需要在vue3上实现Asp.net Web API 下载zip包的功能,本身需求很简单,但是中间遇到了问题,记录一下. 问题: 下载的zip包和后端的zip包大小不一致,后端生成的zip 61 ...
- Creo 4.0二次开发工具框架搭建
一.新建MFC DLL工程 二.配置项目属性 附加依赖项中输入:netapi32.lib;psapi.lib;mpr.lib;wsock32.lib;protk_dll_NU.lib;protk_d ...
- matplotlib -- 绘图操作 -- 数据分析三剑客
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...