- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Visual Studio 中,您至少可以创建三种不同类型的类库:
虽然第一个是我们多年来一直使用的,但我一直感到困惑的一个主要问题是何时使用 .NET Standard 和 .NET Core 类库类型。我最近在尝试 multi-target different framework versions 时被这个咬了一口。 ,和 creating a unit test project .
那么,类库(.NET Standard)和类库(.NET Core)有什么区别,为什么两者都存在,以及我们什么时候应该使用一个比另一个?
最佳答案
When should we use one over the other?
该决定是兼容性和 API 访问之间的权衡。
当您想要增加与您的库兼容的应用程序数量,并且您可以接受减少您的库可以访问的 .NET API 表面积时,请使用 .NET 标准库。
当您想要增加您的库可以访问的 .NET API 表面积,并且您可以只允许 .NET Core 应用程序与您的库兼容时,请使用 .NET Core 库。
例如,面向 .NET Standard 1.3 will be compatible with 的库面向 .NET Framework 4.6、.NET Core 1.0、通用 Windows 平台 10.0 以及支持 .NET Standard 1.3 的任何其他平台的应用程序。不过,该库将无法访问 .NET API 的某些部分。例如,Microsoft.NETCore.CoreCLR
包与 .NET Core 兼容,但不与 .NET Standard 兼容。
What is the difference between Class Library (.NET Standard) and Class Library (.NET Core)?
兼容性:面向 .NET Standard 的库将在任何符合 .NET Standard 的运行时上运行,例如 .NET Core、.NET Framework、Mono/Xamarin 。另一方面,面向 .NET Core 的库只能在 .NET Core 运行时上运行。
API Surface Area:.NET Standard 库包含 NETStandard.Library
中的所有内容,而 .NET Core 库包含 Microsoft.NETCore.App
中的所有内容。后者包括大约 20 个附加库,其中一些我们可以手动添加到我们的 .NET 标准库中(例如 System.Threading.Thread ),而其中一些与 .NET 标准不兼容(例如 Microsoft.NETCore.CoreCLR
)。
此外,.NET Core 库指定运行时并附带应用程序模型。例如,这对于使单元测试类库可运行非常重要。
Why do both exist?
暂时忽略库,.NET Standard 存在的原因是为了可移植性;它定义了.NET 平台同意实现的一组 API。任何实现 .NET 标准的平台都与面向该 .NET 标准的库兼容。 .NET Core 就是这些兼容平台之一。
回到库,.NET Standard 库模板可以在多个运行时上运行(以牺牲 API 表面积为代价)。相反,.NET Core 库模板的存在是为了访问更多 API 表面积(以牺牲兼容性为代价)并指定用于构建可执行文件的平台。
Here is an interactive matrix显示哪个 .NET 标准支持哪些 .NET 实现以及有多少 API 可用区域。
关于.net - .NET Core 和 .NET 标准类库项目类型之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42939454/
我最近在读 CSAPP。在 10.9 节中,它说标准 I/O 不应该与 socket 一起使用,原因如下: (1) The restrictions of standard I/O Restricti
似乎是一个足够标准的问题,可以保证解决方案中的标准设计: 假设我想在文件中写入 x+2(或更少)个字符串。 x 字符串构成一个部分的内容,这两个字符串构成该部分的页眉和页脚。要注意的是,如果内容中没有
代码版本管理 在项目中,代码的版本管理非常重要。每个需求版本的代码开发在版本控制里都应该经过以下几个步骤。 在master分支中拉取该需求版本的两个分支,一个feature分支,
我有以下sql查询,我需要获取相应的hibernate条件查询 SELECT COUNT(DISTINCT employee_id) FROM erp_hr_payment WHERE payment
所以我正在编写一些代码,并且最近遇到了实现一些 mixin 的需要。我的问题是,设计混音的正确方法是什么?我将使用下面的示例代码来说明我的确切查询。 class Projectile(Movable,
我的环境变量包含如下双引号: $echo $CONNECT_SASL_JAAS_CONFIG org.apache.kafka.common.security.plain.PlainLoginModu
示例: /** * This function will determine whether or not one string starts with another string. * @pa
有没有办法在 Grails 中做一个不区分大小写的 in 子句? 我有这个: "in"("name", filters.tags) 我希望它忽略大小写。我想我可以做一个 sqlRestriction
我搜索了很长时间,以查找将哪些boost库添加到std库中,但是我只找到了一个新库的完整列表(如此处:http://open-std.org/jtc1/sc22/wg21/docs/library_t
我已经通过使用这个肮脏的黑客解决了我的问题: ' Filter managerial functions ActiveSheet.Range("$A$1:$BW$2211").Auto
因此,我很难理解我需要遵循的标准,以便我的 Java 程序能够嵌入 HTML。我是否只需将我的主类扩展到 Applet 类,或者我还需要做更多的事情吗?另外,在我见过的每个 Applet 示例中,它都
我对在 Hibernate 中使用限制有疑问。 我必须创建条件,设置一些限制,然后选择日期字段最大值的记录: Criteria query = session.createCriteria(Stora
我有标准: ICriteria criteria = Session.CreateCriteria() .SetFetchMode("Entity1", FetchMo
我很难编写条件来选择所有子集合或孙集合为空的实体。我可以将这些作为单独的条件来执行,但我无法将其组合成一个条件。 类结构: public class Component { p
@Entity class A { @ManyToMany private List list; ... } @Entity class B { ... } 我想使用条件(不是 sql 查询)从 A
我的数据库中有以下表结构: Table A: Table B: Table C: _______________
请帮助我: 我有下一张 table : 单位 ID 姓名 用户 ID 姓名 利率 单位 ID 用户 ID 我不明白如何从 SQL 创建正确的条件结构: 代码: SELECT * FROM Unit W
我正在构建一个包含项目的网站,每个项目都有一个页面,例如: website.com/book/123 website.com/film/456 website.com/game/789 每个项目都可以
我需要使用两个属性的组合来过滤结果列表。一个简单的 SQL 语句如下所示: SELECT TOP 10 * FROM Person WHERE FirstName + ' ' + LastName L
我有一个“ super 实体”SuperEntity 和三个扩展父类(super class)的实体 ChildEntity1、...、ChildEntity3。 搜索数据库中的所有实体很容易,即我们
我是一名优秀的程序员,十分优秀!