1、什么是 .NET Core
.NET是开发平台,.NET 是 .NET Framework、.NET Core、Xamarin/Mono的统称。
.NET 以前被称为 .NET Framework,现在已经不是了;
.Net Core 是一个 免费、开源、跨平台 的技术;
.NET Framework:有近20年历史,是 .NET 简称的最早拥有者,用于开发windows程序;
云计算:包括各种服务、比如云服务器,能动态伸缩服务器数量,满足突发性要求、按量付费等;
2、.NET Core的重要性
.NET 这是一个开发平台,它提供运行时、类等,但它与语言无关;
推荐C#图书:《C#图解教程》《C#入门经典》
对于 .NET Framework 到 .NET Core 过程,尽管绝大部分用法都没变,但是.NET Core 不是.NET Framework的升级版,无法直接升级!需要修改细微的差别;
之前放入 Mono技术,可以让 .NET Framework 运行在Linux平台下,微软收购了Mono,那为何还要开发 .NET Core?
3、.NET Standard
Standard:"标准" 的意思;
.NET Standard 只是一个标准、不提供具体的实现,具体的实现在 .NET Core 或 .NET Framework 上;
用 .NET Standard 开发的程序,可以被 .NET Framework 或者 .NET Core 中的各个版本引用;
新建 .NET Standard 类库,新建一个 Class1 类文件:
public class Class1{
public static void Test(){
Console.WriteLine(typeof(FileStream).Assembly.Location);
COnsole.WriteLine(typeof(Class1).Assembly.Location);
}
}
然后再分别新建 .NET Framework 和 .Net Core 的控制台项目,都引用它,输出:
.NET Framework
C:/windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
C:/Users/cowne/source/repos/TestLib1/FrameworkConsole1/bin/Debug/TestLib1.dll
.NET Core
C:/Program Files/dotnet/shared/Microsoft.NETCore.App/3.1.9/System.Private.CoreLib.dll
C:/Users/cowne/source/repos/TestLib1/CoreConsole1/bin/Debug/netcoreapp3.1/TestLib1.dll
.NET Framework 4.8 支持到 .NET Standard 2.0 为止;
4、顶级语句?
说了新建 .NET 5 和 .NET 6 项目时的顶级语句区别,其他没了;
5、开发环境搭建
- .NET CLI 命令行方式
- Visual Studio:在window平台下;(推荐)
- Visual Studio For Mac
- Jetbrains Rider 收费
- VS Code
.NET CLI 命令行:https://learn.microsoft.com/zh-cn/dotnet/core/tools/
在 abc 目录内:
dotnet new console
dotnet run
dotnet new winforms --name mywinform
6、项目结构及程序发布
分别新建 .NET Framework 和 .NET Core 项目:
- Framework 包含 .csproj文件,描述项目的信息(比如项目是exe类型的,项目的目标框架是 .NET Framework 4.6.1,项目引用了哪些程序集,包含了哪些源代码文件等,某个类增加,会加到.csproj文件上,从项目移除会删掉;
- Core 也有 .csproj 文件,它比 Framework 描述更少;
- 某个类增加,不会加到.csproj文件上,而类从项目移除,会记录到 .csproj 文件上
- vs上双击项目会打开 .csproj 文件
发布win文件时,ReadyToRun是啥?裁剪未使用代码又是啥?
docs.microsoft.com/zh-cn/dotnet/core/deploying/ready-to-run
ReadyToRun编译 是什么?
在Visual Studio中,发布Win项目时,"ReadyToRun"(简称R2R)编译是一种优化技术,它可以提高应用程序的启动性能。R2R编译是一种预先编译的方式,将应用程序的IL代码编译为本机代码,并将其与应用程序一起发布。这样,在运行应用程序时,就无需在运行时进行即时(JIT)编译,从而减少了启动时间。
R2R编译通过在发布过程中生成预先编译的本机映像来实现。这些本机映像包含已编译的IL代码和相关的元数据,以及一些额外的信息,以帮助.NET运行时加载和执行应用程序。这些本机映像可以与.NET运行时一起部署,并在应用程序启动时加载和使用。
使用R2R编译可以提供更快的应用程序启动时间,尤其是对于大型应用程序或应用程序启动时有大量代码需要编译的情况。但需要注意的是,R2R编译会增加发布文件的大小,并且生成的本机映像是特定于平台和架构的,因此需要为不同的目标平台和架构进行单独的发布。
在Visual Studio中,可以通过在项目属性的“生成”选项卡中选择“高级”设置,启用或禁用R2R编译。可以选择"不使用 R2R 编译"、"仅使用 R2R 编译"或"先使用 R2R 编译,然后 JIT 编译",具体取决于您的需求和目标平台。
裁剪未使用的代码:删掉项目中未使用的代码和程序集,精简发布后的文件大小;但是项目中用到反射时,会出现问题;
9-10、Nuget 1-2
在其他语言中,包管理工具:
- Linux:apt、yum
- JavaScript:npm
- Java:Maven、Gradle
- Python:pip
在 .NET 中,是用 NuGet 的:
注意,要看支持的版本