.NET Standard 的管理策略

.NET Standard 的管理策略

2018-07-08 14:28

.NET Standard 作为各大 .NET 的标准,我们有必要了解一下它是如何在各种 .NET 的实现之间履行自己的职责的。所以,本文会说说它的管理策略。


都有哪些 .NET Standard 的实现?

目前 .NET Standard 的实现有这些:

  • .NET Core
  • .NET Framework
  • Mono
  • Unity
  • Xamarin

标准在前还是实现在前?

标准在前指的是先制定出 .NET Standard 的某个版本的标准,然后再由各个 .NET Standard 的实现去完成实现。而实现在前指的是待各个 .NET Standard 的实现完成某个版本的发布之后,.NET Standard 再进行新版本的发布,确保发布时所有实现都已有版本完成。

.NET Standard 采取的是后者——实现在前。

主要在于,如果 .NET Standard 的 API 先发布,那么很多开发者基于新 .NET Standard API 开发的应用可能根本就没有办法编译到 .NET 的各个实现,例如 Mono/Xamarin。

标准之内还是使用标准?

.NET Standard 的发布有两种不同的方式。

第一种,也是大家经常提及的一种,即要求各大 .NET 实现都内置的 API 集。当我们在项目文件中指定 TargetFrameworknetstandard 时,我们可以直接地原生地使用到的那些 API。

第二种,是通过 NuGet 包发布的基于 .NET Standard 标准实现的 TargetFramework 指定为 netstandard 的类库。不止微软通过这种方式发布了大量基于 .NET Standard 的类库, 上大量流行的库也基本上都有生成基于 `netstandard` 的版本。而这种并不需要各大 .NET 实现对此做额外的发布都能够正常使用,因为这种发布到 NuGet 上的包本身已自带一份实现。

这两种不同的方式分别独立更新而互不影响。

并不一定都能实现的标准

.NET Standard 中的 API 并不一定都是能被各大 .NET 的实现来实现的,因为现实的运行环境总是有或多或少的限制。

典型的例子是——苹果 App Store 的应用商店不允许应用在运行时生成可执行代码,所以 Xamarin 的 iOS 版本就无法实现运行时代码生成的部分标准。


参考资料

本文会经常更新,请阅读原文: https://walterlv.com/post/net-standard-governance.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

mono 1.2.3发布了

    Mono于昨天发布了1.2.3版本,这个版本的还是修复bug和实现API,这个版本共实现了1993个API,你可以用Mono的一个工具Moma,Mom...

21790
来自专栏小白课代表

Windows必备 | 微软常用运行库 最新版。

日常生活中很多软件是使用 Microsoft Visual Studio 编写的,这类软件的运行是离不开微软系统运行库的,比如像 QQ、迅雷、Adobe 软件等...

43810
来自专栏张善友的专栏

ASP.NET可以在Windows Server 2008 R2 Server Core上运行

微软在上周举行的Windows硬件工程大会(Windows Hardware Engineering Conference,WinHEC)展示了Windows ...

197100
来自专栏张善友的专栏

.Net 跨平台可移植类库PCL可用于任何平台包括Mono

Microsoft 在 .NET Framework 4 中添加了一个名为可移植类库 (PCL) 的新功能。 利用 PCL,您可以有选择性地面向 .NET Fr...

223100
来自专栏张善友的专栏

ASP.NET开发人员需要学习ASP.NET MVC么?

InfoQ上有篇文章ASP.NET开发人员需要学习ASP.NET MVC么? 文章已经覆盖了绝大多数对于学习/使用ASP.NET MVC的观点。 我觉得ASP....

21390
来自专栏张善友的专栏

ASP.NET MVC 1.0发布

Microsoft已经发布了ASP.NET Model-View-Controller (MVC) web框架1.0版,这是微软采用开源协议发布,并且同开发社区...

230100
来自专栏施炯的IoT开发专栏

Windows 10 IoT Core 17101 for Insider 版本更新

除夕夜,微软发布了Windows 10 IoT Core 17101 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性。 已知的...

34960
来自专栏张善友的专栏

VS 2005 TFS MSSCCI Provider

如果您的开发工具不是VS 2005 ,但又有需要和Team Foundation Server整合该怎么办? 如果您的开发工具或软件属于下列几种: * Vis...

20580
来自专栏张善友的专栏

Mono 3.0.12 支持可移植类库

Mono 3.0.12已于6月19日发布。对跨平台开发者而言,对可移植类库的支持可能是该版本最重要的变化。该技术可以使一个DLL支持.NET、Windows S...

210100
来自专栏程序你好

.NET Core 3将支持Windows桌面应用

10830

扫码关注云+社区

领取腾讯云代金券