首页 文章

.NET Core是.NET标准的“实现”吗?

提问于
浏览
15

我仍然对.NET Core和.NET Standard如何相互关联感到困惑 .

据我所知,.NET Standard是一个接口定义(与Katana是OWIN的实现方式不同) . .NET Framework将实现.NET Standard的版本 .

到目前为止这是正确的吗?

.NET Core将其依赖项捆绑在其中 . 这些依赖项将使用.NET Standard接口的实现 . 这可能是.NET Framework,Mono或其他东西 .

ASP Core是.NET Core,引用了“Web”内容 . 几乎只是一个Visual Studio模板,它可以通过.NET Core控制台应用程序构建 .

我还在接近正轨吗?

最后,如果我可以创建一个新的绿色字段应用程序,那么.NET Core应该是受欢迎的技术(假设我不需要任何仅.NET Framework程序集) .

最后一个问题,我可以从.NET Core项目中引用GAC中的.NET Framework程序集吗?

干杯

4 回答

  • 6

    其他答案很棒并且很好地涵盖了技术方面,但我认为理解.NET Standard的关键是知道它实际上是什么;这是允许开发人员编写他们的库和通用代码,使其可以被他们编写的任何应用程序使用,无论使用该代码的应用程序在哪个平台(Web,桌面,移动,服务等) .

    这是必需的,因为.NET已经分叉并演变成多种风格(主要是完整的.NET Framework,.NET Core和Xamarin) . 目前,如果您想编写一些封装的代码,例如一些关键业务逻辑,然后在桌面应用程序,移动应用程序和网站中使用该代码,那么很难实现 .

    .NET标准的想法是,如果您编写的代码仅针对.NET Standard中的API,那么它应该适用于安装了.NET版本以实现.NET Standard的任何平台 .

    您没有在.NET Standard中编写整个应用程序,因为您仍然需要平台或.NET版本特定的功能(例如Windows窗体控件库,Xamarin窗体控件,文件系统访问,Web安全性等),但是如果您编写的库代码以.NET Standard为目标,您将知道它可以在不同平台上的不同应用程序之间轻松共享,并且如果它们安装了.NET标准版本的.NET,它应该可以在这些平台上运行 .

    "Why do we need a standard?" section of this MSDN blog by Immo Landewerth很好地涵盖了这一点 .

  • 2

    我的理解是 .NET Core 正在实施 .NET Standard .

    所以 .NET Standard 更像是一个规范, .NET Core 是一个实现该规范的实际框架 .

    .NET Standard 也由其他框架实现,如 .NET FrameworkXamarin (和 .NET Core ,它 Build 在 .NET Core 的顶部) .

    Here is offficial explanation

    .NET Standard与.NET Core有何不同? .NET Standard是一个规范,涵盖了.NET平台必须实现的API . .NET Core是一个具体的.NET平台,它实现了.NET标准 .

    .NET Standard

    .NET标准是.NET API的正式规范,旨在提供给所有.NET运行时 . 各种.NET运行时实现.NET Standard的特定版本 .

    Introducing .NET Standard

    .NET Standard是一组所有.NET平台都必须实现的API . 这统一了.NET平台并防止了未来的碎片 . .NET Standard 2.0将由.NET Framework,.NET Core和Xamarin实现 . 对于.NET Core,这将添加许多已请求的现有API .

    Introducing .NET Core

    .NET Core本质上是.NET Framework的一个分支另一种看待它的方法:.NET Framework基本上有两个分支 . 一个分叉由Microsoft提供,仅适用于Windows . 另一个分支是Mono,你可以在Linux和Mac上使用它 .

    有关详细信息,请阅读:

  • 4
    • 是的,.NET Core是一个实现.NET Standard版本的平台/运行时 .

    如果您构建一个面向.NET Standard版本的库,则可以在任何实现此版本或更高版本.NET Standard的运行时上使用它 . 这适用于.NET Core以及mono(=> Xamarin),UWP(.NET Native)和.NET Framework .

    • 分发的细节并不重要..技术上,.NET Core <2.0依赖于构建 NETStandard.Library 的方式,但是2.0的变化 .

    • ASP.NET Core是一套在.NET标准版本(2.0之前版本也是.NET Framework版本)上面的一组库和工具,它需要运行 . 这意味着您可以为.NET Core和.NET Framework构建ASP.NET Core应用程序 - 如果它们支持所需的.NET Standard级别,甚至可能是其他运行时 .

    • 对于新项目,评估您的需求是有意义的 . .NET Core具有与.NET Framework不同的服务策略,.NET Framework仍然具有不会包含在.NET Core中的组件和API - 例如WinForms和WPF .

    对于新的库项目,尽可能以.NET Standard而不是.NET Framework为目标是有意义的,以确保在更多类型的项目中可重用 .

  • 10

    简单的答案是 yes

    .NET Core实现了.NET标准库,因此支持.NET标准库 .

    ASP.NET Core构建于.NET Core之上 .

    But :这并不意味着所有ASP.NET核心应用程序都支持.NET Standard . ASP.NET Core应用程序可以在.NET Core或完整的.NET Framework上运行 . 如果应用程序将完整的.NET Framework作为目标平台,则它可能依赖于库,而不支持.NET Standard .

相关问题