1_04_盘点.NET重要组件
一、Runtime .Net运行时(C#)
基础类库, 3.0的时候叫coreFx
与公共语言运行时有很大的区别,底层的
Runtime是直面我们开发者的,比如Datetime,属于Runtime,是完全用c#编写的,运行时库
1、减少net的工作量,封装了大量好用的类库、类型和函数,打开文件,读取,字符串的处理,常用基础类库
2、让不同模块之间的交互更加容易
c语言,两个类库,使用了不同的时间类型,每次转递时间都需要转化的
c#内置的Datetime类型,内置的越丰富,各个模块之间公用使用的类型就越多
真正实现基础开发功能的是runtime
跨平台的应用
CLR是跨平台的,Runtime是不是也要跨平台?
Runtime不是跨平台的, 各个平台是有差异的,为了避免区别,同一套代码开发出不同的东西
又提出了net标准,
.NET Standard
可以广泛的被不同平台支持
Unity支持net的,是自己的运行时
Mono都是拥有自己的运行时runtime
但凡被标准里规定的,都需要支持 ,可以在不同的平台使用
.Net Framework 4.8和.NET8.0都支持.Net Standard 2.0
如果你开发的类库支持.Net Standard 2.0,就可以再两个不同运行时使用
.Net Standard 2.1就舍弃了.Net Framework,太老了,没有必要兼容了
从netcore3.0到8.0都支持
二、CLR 通用中间语言:
公开的技术标准,定义了一个不依赖于具体操作系统,与硬件架构的一个中间语言,和执行这个语言所运行的环境
传统语言,又很多依赖平台的部分,c语言,int类型长度最少两个字节,最长实际不确定32位平台是 4个字节,64位平台是8个字节
中间语言的标准规定了int最长就是4个字节
不需要关注平台的差异性,更多的精力关注编码上
跨平台,高级语言转换到中间语言,可以被另一个高级语言所使用
c#编写的类库,可以被VB.Net所调用的,跨语言
三、CLR 命令行接口
.Net Fromewoke 只支持windows
NET Core 支持跨平台,推倒重来
.Net编译生成的二进制--》针对不同操作系统生成不同文件格式,还是统一的格式?
默认是生成统一的
Dll==PE格式
linux是不支持PE格式
CLI命令行接口工具==》》net core 2.0才有的
基础了项目文件管理、项目构成、代码运行等一系列的工具
但凡要与net交互的都是通过这个工具实现的,创建,发布,应用
随着SDK一起被安装 ,按照运行时的时候也会被安装
两个完整性是不一样的
运行时是基本的,编译不行
sdk是支持编译的
是跨平台的,不同操作系统都支持的
可以在命令行里面执行 dotnet -h,看支持那些命令
C:\Users\zys>dotnet -h
使用情况: dotnet [runtime-options] [path-to-application] [arguments]
执行 .NET 应用程序。
runtime-options:
--additionalprobingpath <path> 要探测的包含探测策略和程序集的路径。
--additional-deps <path> 指向其他 deps.json 文件的路径。
--depsfile 指向 <application>.deps.json 文件的路径。
--fx-version <version> 要用于运行应用程序的安装版共享框架的版本。
--roll-forward <setting> 前滚至框架版本(LatestPatch, Minor, LatestMinor, Major, LatestMajor, Disable)。
--runtimeconfig 指向 <application>.runtimeconfig.json 文件的路径。
path-to-application:
要执行的应用程序 .dll 文件的路径。
使用情况: dotnet [sdk-options] [command] [command-options] [arguments]
执行 .NET SDK 命令。
sdk-options:
-d|--diagnostics 启用诊断输出。
-h|--help 显示命令行帮助。
--info 显示 .NET 信息。
--list-runtimes 显示安装的运行时。
--list-sdks 显示安装的 SDK。
--version 显示使用中的 .NET SDK 版本。
SDK 命令:
add 将包或引用添加到 .NET 项目。
build 生成 .NET 项目。
build-server 与由生成版本启动的服务器进行交互。
clean 清理 .NET 项目的生成输出。
format 将样式首选项应用到项目或解决方案。
help 在浏览器中打开指定命令的引用页。
list 列出 .NET 项目的包或引用。
msbuild 运行 Microsoft 生成引擎(MSBuild)命令。
new 创建新的 .NET 项目或文件。
nuget 提供其他 NuGet 命令。
pack 创建 NuGet 包。
publish 发布 .NET 项目进行部署。
remove 从 .NET 项目中删除包或引用。
restore 还原 .NET 项目中指定的依赖项。
run 生成并运行 .NET 项目输出。
sdk 管理 .NET SDK 安装。
solution 修改 Visual Studio 解决方案文件。
store 在运行时包存储中存储指定的程序集。
test 使用 .NET 项目中指定的测试运行程序运行单元测试。
tool 安装或管理扩展 .NET 体验的工具。
vstest 运行 Microsoft 测试引擎(VSTest)命令。
workload 管理可选工作负荷。
捆绑工具中的其他命令:
dev-certs 创建和管理开发证书。
fsi 启动 F# 交互/执行 F# 脚本。
user-jwts 在开发中管理 JSON Web 令牌。
user-secrets 管理开发用户密码。
watch 启动文件观察程序,它会在文件发生更改时运行命令。
运行 "dotnet [command] --help",获取有关命令的详细信息。
四、Roslyn 语言编译器
不仅仅是编译器,是编译平台
类型不存在,代码错误提示,
通过vs调用Roslyn的API来即时的编译代码,后台不停地编译,那些类型,那些方法,开发阶段报错,最终编译也少不了它
浙公网安备 33010602011771号