1 为什么会出现.NET Core这个东西?即它为了解决什么问题。
.NET Core是NET的ECMA标准的一种新的实现。目前.NET已有Framework,Mono,Unity等实现。
原先所有的.NET程序(Mono不在范围内)仅在windows平台环境下运行,这严重限制了.NET的生态扩展,所以.NET Core解决了.NET跨平台可移植的问题,可以在Windows, Linux,MacOS下开发并部署运行。
2 具有哪些特点?
-
跨平台: 可以在 Windows、macOS 和 Linux 操作系统上运行。 跨平台 ASP.NET Web 应用、跨平台控制台应用、跨平台库和框架、UWP 应用。
-
跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
-
命令行工具: 包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
-
部署灵活: 可以包含在应用或已安装的并行用户或计算机范围中。 可搭配 Docker 容器使用。
-
兼容性:.NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
-
开放源代码:.NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
-
由 Microsoft 支持:.NET Core 由 Microsoft 依据 .NET Core 支持提供支持。
3 .NET Core在.NET中处与什么位置?与原有的.NET Freamwork有什么关系和不同?
.NET Core是.NET技术的一种新的实现,而不是.NET Framework的子集。.NET Core的代码和Framework的代码可以共存在一个解决方案中。
.NET Core 和 .NET Framework 上均实现了 .NET API(虽然有时底层的实现不同)。同时,.NET Core 和 .NET Framework 均有对方不具备的 API 和功能。例如,.NET Framework 有多个 .NET Core 不具备的 GUI 框架和特定于 Windows 的 API。同样地,.NET Core 有 .NET Framework 缺少的跨平台功能和 API。
.NET Core 不支持所有 .NET Framework 应用模型。 具体而言,它不支持 ASP.NET Web 窗体和 ASP.NET MVC,但支持 ASP.NET Core MVC(已宣布 .NET Core 3 将支持 WPF 和 Windows 窗体)。
4 .NET Core由哪些部分组成?
.NET Core 包括以下部分:
-
.NET Core 运行时:提供类型系统、程序集加载、垃圾回收器、本机互操作和其他基本服务。 .NET Core 框架库提供基元数据类型、应用编写类型和基本实用程序。
-
ASP.NET 运行时:提供框架以生成基于新式云的 Internet 连接的应用程序,例如 Web 应用、IoT 应用以及移动后端。
-
.NET Core CLI 工具和语言编译器(Roslyn 和 F#):提供 .NET Core 开发人员体验。
-
dotnet 工具:用于启动 .NET Core 应用和 CLI 工具。 它选择运行时并托管运行时,提供程序集加载策略并启动应用和工具。
这些组件采用以下方式分布:
-
.NET Core 运行时-- 包括 .NET Core 运行时和框架库。
-
ASP.NET Core 运行时-- 包括 ASP.NET Core 和 .NET Core 运行时以及框架库。
-
.NET Core SDK -- 包括 .NET CLI 工具、ASP.NET Core 运行时以及 .NET Core 运行时和框架。
5 与Mono比较
Mono 是原始的跨平台和 开放源 .NET 实现,于 2004 年首次发布。 可以把它看作是 .NET Framework 的社区克隆。 Mono 项目团队依赖于 Microsoft 发布的开放 .NET 标准(尤其是 ECMA 335),以便实现兼容性。
就这个角度来说,.NET Core与Mono是一样的。
.NET Core 和 Mono 的主要差异在于:
-
应用模型 -- Mono 通过 Xamarin 产品支持 .NET Framework 应用模型(例如,Windows Forms)和其他应用模型(例如,Xamarin.iOS)的子集。 而 .NET Core 不支持这些内容。
-
API -- Mono 使用相同程序集名称和组成要素支持 .NET Framework API 的 大型子集。
-
平台 -- Mono 支持很多平台和 CPU。
-
开放源 -- Mono 和 .NET Core 两者都使用 MIT 许可证,且都属于 .NET Foundation 项目。
-
焦点 -- 最近几年,Mono 的主要焦点是移动平台,而 .NET Core 的焦点是云和桌面工作负载。
6 .NET Core能做些什么事情?
可以使用 C#、Visual Basic 和 F# 语言编写适用于 .NET Core 的应用程序和库。
7 怎么安装?
8 操作入口和界面?
.NET Core的项目工程使用CLI作为操作界面,它是一个命令行程序。常见的命令如下:
命令 |
说明 |
dotnet new |
使用 C# 语言初始化用于类库或控制台应用程序的有效项目。 |
dotnet restore |
还原在指定项目的 project.json 文件中定义的依赖项。依赖项通常是您在应用程序中使用的 NuGet 包。 |
dotnet build |
生成您的代码! 此命令将生成适用于您的项目的中间语言 (IL) 二进制。如果项目是控制台应用程序,则产生的输出是可执行的,您可以立即运行。默认情况下,生成命令会将生成的程序集和可执行文件(如果适用)输出到调用位置目录的 bin 目录中。 |
dotnet test |
如果不支持运行测试,则不会出现适合的工具。此命令让您可以使用在 project.json 文件中指定的运行程序运行一组测试。目前支持 xUnit 和 NUnit 测试运行程序。 |
dotnet publish |
发布在目标计算机上运行的应用程序。 |
dotnet pack |
pack 命令会把您的项目打包成 NuGet 包。输出一组 nupkg 文件后,您可以将其上载至您的源,或使用本地文件夹替代将其用于还原操作。 |
dotnet run |
运行命令将编译并运行您的应用程序。您可以将其看作没有 Visual Studio 的 Ctrl+F5 模拟。 |
9 如何部署?与原先的.NET程序的部署有什么不同?
10 前景和规划
从目前微软在.NET Core上的更新速度以及开发计划上看,.NET Core的发展前景非常好,且逐步完善并向.NET Framework功能集合靠拢。比如.NET Core 3.0预览版即将支持WinForm和WPF程序开发。
而Mono的发展逐步转移到移动开发上。