惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
V
Visual Studio Blog
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
月光博客
月光博客

博客园 - 张彦山

03_03_依赖注入多种方式 03_02_服务注册与消费 03_01_服务作用域 02_05_生命周期管理 02_04_依赖注入基本用法 02_03_依赖注入与控制反转 1_05_详解.NET标准与重要工具 1_03_详解.NET公共语言运行时 1_02_解读.NET开源许可协议 1-01梳理.NET平台发展路线 SQLServer存储过程中break、continue及return 三者的区别: SqlDBX格式化sql语句输出 Mysql转存sql结构和数据文件,不包含视图,使用结构同步视图 启用防火墙要配置入站规则redis端口6379或程序 清除SQL Server数据库日志(ldf文件) 阿里云服务器sqlserver暴力登录密码攻击的处理 清除远程桌面缓存命令 sqlserver修改表结构,阻止保存要求重新创建表的更改 从旧表复制数据到新表
1_04_盘点.NET重要组件
张彦山 · 2026-01-23 · via 博客园 - 张彦山

一、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来即时的编译代码,后台不停地编译,那些类型,那些方法,开发阶段报错,最终编译也少不了它