微软.net 10是.NET 9的继任者,作为长期支持 (LTS) 版本, 支持三年生命周期,是一款免费的、开源的、跨平台的框架,一般又称为microsoft.net sdk 10,将助力开发者构建具有全球最佳性能、安全且现代的应用程序,同时将简化的 AI 集成注入应用程序,以前所未有的速度和规模部署到云中,并以业内最高效的 AI 支持的开发人员工具进行构建。
与前一版本相比,微软.net 10在.NET Runtime、SDK、库、C#、ASP.NET Core、Blazor以及.NET MAUI等多个方面带来了重大改进和强,预览版延续了性能优化与AI集成的核心方向,同时为开发者带来更多前瞻性功能。这一跨平台开源框架的最新迭代集成了前沿的AI工具链、深度云原生优化,以及突破性的性能提升,为全球超过500万.NET开发者带来技术新范式。具体表现为:库增强、运行时优化、SDK改进、C#语言更新、.NET MAUI质量提升、Android、iOS、macOS和tvOS支持等等方面,其详细的介绍可参考下文,快免费下载体验吧。
软件说明:
1、完整版
10.0.100-preview.4.25258.110
2、Visual Studio 支持
Visual Studio 2022 (v17.14)
3、包括在
Visual Studio 17.14
4、包含的运行时
.NET 运行时 10.0.0-preview.4.25258.110
ASP.NET Core 运行时 10.0.0-preview.4.25258.110
.NET 桌面运行时 10.0.0-preview.4.25258.110
5、语言支持
C# 13.0
F# 9.0
Visual Basic 16.9
microsoft.net sdk 10新增功能
一、.NET 10 运行时中的新增功能
1、数组接口方法去虚拟化
.NET 10 的重点 领域 之一是减少常用语言功能的抽象开销。 为了追求此目标,JIT 去虚拟化方法调用的能力已经扩展为涵盖数组接口方法。
2、数组枚举去抽象化
通过枚举器减少数组迭代的抽象开销的努力改进了 JIT 的内联、堆栈分配和循环克隆功能。 例如,通过 IEnumerable 枚举数组的开销减少,并且条件转义分析现在在某些情况下支持枚举器进行堆栈分配。
3、小型值类型数组的堆栈分配
在 .NET 9 中,JIT 获得了在对象保证不会超过其父方法的生命周期时在堆栈上分配对象的能力。 堆栈分配不仅减少了 GC 必须跟踪的对象数,而且还会解锁其他优化。 例如,在对象被堆栈分配后,JIT 可以考虑将其完全替换为其标量值。 因此,堆栈分配是减少引用类型的抽象惩罚的关键。在 .NET 10 中,JIT 现在会在栈上分配小型固定大小的值类型数组,这些数组在能够实现前面所述的相同生存期保证时,不包含 GC 指针。
4、引用类型的小型数组的堆栈分配
.NET 10 将 .NET 9 堆栈分配改进 扩展到引用类型的小型数组。 以前,即使引用类型的生存期限定为单个方法,也始终在堆上分配引用类型的数组。 现在,JIT 在确定这些数组不会超过其创建上下文的生命周期后,可以将其堆栈分配。
5、改进了代码布局
.NET 10 中的 JIT 编译器引入了一种将方法代码组织为基本块的新方法,以提高运行时性能。 以前,JIT 使用程序流图的反向后序(RPO)遍历作为初始布局,然后进行迭代转换。 虽然此方法有效,但在模拟减少分支与增加热代码密度之间权衡时存在限制。
在 .NET 10 中,JIT 将块重新排序问题建模为减少非对称旅行销售人员问题,并实现 3 选择启发式来查找近乎最佳的遍历。 此优化可提高热路径密度并减少分支距离,从而提高运行时性能。
6、AVX10.2 支持
.NET 10 为基于 x64 的处理器引入了对高级矢量扩展 (AVX) 10.2 的支持。 一旦提供支持的硬件,就可以测试类中 System.Runtime.Intrinsics.X86.Avx10v2 可用的新内部函数。
由于已启用 AVX10.2 的硬件尚不可用,因此 JIT 对 AVX10.2 的支持目前默认处于禁用状态。
7、在 NativeAOT 的类型预初始化器中支持类型转换和逻辑否定
NativeAOT 的类型预初始化器现在支持所有 conv.* 和 neg 操作码的变体。 此增强功能允许对包含类型转换或取反操作的方法进行预初始化,从而进一步优化运行时性能。
8、局部结构体字段的逃逸分析
转义分析 确定对象是否可以超过其父方法的生命周期继续存在。 当对象分配给非局部变量或传递给 JIT 没有内联的函数时,它们会“转义”。 如果对象无法转义,则可以在堆栈上分配它。 从 .NET 10 开始,JIT 也会考虑结构体 字段引用的对象,这能够实现更多的栈分配并减少堆内存开销。
9、内联改进
在 .NET 10 中,JIT 可以内联:
- 由于之前的内联,方法获得了进行非虚拟化的资格。 这种改进使 JIT 可以发现更多的优化机会,例如进一步内联和去虚拟化。
- 某些方法具有异常处理语义,尤其是那些包含 try-finally 块的方法。
.NET 10 还进行了以下改进:
- 为了更好地利用 JIT 对某些数组进行堆栈分配的能力,内联器的启发式策略进行了调整,以提高那些可能返回小型固定大小数组的候选项的效益。
- 在内联期间,JIT 现在更新保存返回值的临时变量的类型。 如果被调用函数中的所有返回位置都生成相同的类型,则使用此精确的类型信息来使后续调用去虚拟化。 此增强功能补充了后期非虚拟化和数组枚举去抽象的改进。
- 当 JIT 决定某个调用点不适合内联时,为了减少编译时间,它会将该方法标记为 NoInlining,从而阻止将来的内联尝试考虑此方法。 但是,许多内联启发法对性能分析数据很敏感。 例如,在缺乏配置文件数据的情况下,JIT 可能会认为某个方法太大而不值得进行内联。 但是,当调用方足够热时,JIT 可能愿意放宽其大小限制并内联呼叫。 在 .NET 10 中,JIT 不再标记无利可得的内联方法,用 NoInlining 以避免使用性能分析数据降低调用站点效率。
二、适用于 .NET 10 的 .NET 库的新增功能
一)密码学
1、按 SHA-1 以外的指纹查找证书
通过指纹唯一查找证书是一个相当常见的操作,但 X509Certificate2Collection.Find(X509FindType, Object, Boolean) 方法(用于 FindByThumbprint 模式)仅搜索 SHA-1 指纹值。
使用 Find 此方法查找 SHA-2-256(“SHA256”)和 SHA-3-256 指纹存在一些风险,因为这些哈希算法的长度相同。
相反,.NET 10 引入了一 个新方法 ,该方法接受用于匹配的哈希算法的名称。
2、在 ASCII/UTF-8 中查找 PEM 编码的数据
PEM 编码(最初是 隐私增强邮件,但现在在电子邮件外部广泛使用)被定义为“文本”,这意味着该 PemEncoding 类旨在运行 String 和 ReadOnlySpan<char>。 类似于证书的东西通常是写在使用 ASCII(字符串)编码的文件中,这在 Linux 上尤其常见。 从历史上看,这意味着你需要打开文件并将字节转换为字符(或字符串),然后才能使用 PemEncoding。
新 PemEncoding.FindUtf8(ReadOnlySpan<Byte>) 方法利用了 PEM 仅为 7 位 ASCII 字符定义的事实,并且 7 位 ASCII 与单字节 UTF-8 值完全重叠。 通过调用此新方法,可以跳过 UTF-8/ASCII 到字符转换并直接读取文件。
3、PKCS#12/PFX 导出的加密算法
新的 ExportPkcs12 方法使得 X509Certificate 允许调用方选择用于生成输出的加密和摘要算法:
- Pkcs12ExportPbeParameters.Pkcs12TripleDesSha1 指示 Windows XP 时代事实上的标准。 通过选择较旧的加密算法,它生成的输出几乎可以被所有支持读取 PKCS#12/PFX 的库和平台支持。
- Pkcs12ExportPbeParameters.Pbes2Aes256Sha256 指示应使用 AES 而不是 3DES(和 SHA-2-256 而不是 SHA-1),但所有读取器(如 Windows XP)可能无法理解输出。
如果想要更多控制,可以使用重载来接受PbeParameters。
二)全球化和日期/时间
1、ISOWeek for DateOnly 类型的新方法重载
最初设计的 ISOWeek 类主要是为了专门使用 DateTime,因为它是在 DateOnly 类型出现之前引入的。 既然DateOnly现在可用了,那么ISOWeek也有必要支持它。 以下重载是新引入的:
- GetWeekOfYear(DateOnly)
- GetYear(DateOnly)
- ToDateOnly(Int32, Int32, DayOfWeek)
2、用于字符串比较的数字排序
数值字符串比较是一项高度请求的功能,用于在数字上而不是按词法比较字符串。
3、具有单个参数的新 TimeSpan.FromMilliseconds 重载
以前引入了TimeSpan.FromMilliseconds(Int64, Int64)方法,但没有添加接受单个参数的重载。尽管这是由于第二个参数是可选的,但在 LINQ 表达式中使用时会导致编译错误,出现此问题的原因是 LINQ 表达式无法处理可选参数。 为了解决此问题,.NET 10 引入了 新的重载 采用单个参数。 它还修改现有方法 ,使第二个参数是必需的。
三)字符串
1、用于处理字符范围的字符串规范化 API
Unicode 字符串规范化已长时间受支持,但现有 API 仅适用于字符串类型。 这意味着,具有以不同形式存储的数据(如字符数组或范围)的调用方必须分配一个新字符串才能使用这些 API。 此外,返回规范化字符串的 API 始终分配一个新字符串来表示规范化输出。
.NET 10 引入了处理字符范围的新 API,这些 API 将规范化扩展到字符串类型之外,并帮助避免不必要的分配:
- StringNormalizationExtensions.GetNormalizedLength(ReadOnlySpan<Char>, NormalizationForm)
- StringNormalizationExtensions.IsNormalized(ReadOnlySpan<Char>, NormalizationForm)
- StringNormalizationExtensions.TryNormalize(ReadOnlySpan<Char>, Span<Char>, Int32, NormalizationForm)
四)收集
1、为 OrderedDictionary<TKey, TValue> 添加额外的 TryAdd 和 TryGetValue 重载
OrderedDictionary<TKey,TValue> 提供 TryAdd 并 TryGetValue 像任何其他 IDictionary<TKey, TValue> 实现一样进行添加和检索。 但是,在某些情况下,你可能想要执行更多操作,因此会添加新的重载,以便返回一个条目的索引。
- TryAdd(TKey, TValue, Int32)
- TryGetValue(TKey, TValue, Int32)
五)序列化
1、允许在JsonSourceGenerationOptions中指定 ReferenceHandler
使用 源生成器进行 JSON 序列化时,在序列化或反序列化周期时,生成的上下文将引发。 现在,您可以通过在 JsonSourceGenerationOptionsAttribute 中指定 ReferenceHandler 来自定义此行为。
六)System.Numerics
1、更多左手矩阵变换方法
.NET 10 添加了用于为广告牌和约束广告牌矩阵创建左手转换矩阵的剩余 API。 您可以像使用现有的右手坐标系那样,使用这些方法,例如,CreateBillboard(Vector3, Vector3, Vector3, Vector3),当使用左手坐标系时。
- Matrix4x4.CreateBillboardLeftHanded(Vector3, Vector3, Vector3, Vector3)
- Matrix4x4.CreateConstrainedBillboardLeftHanded(Vector3, Vector3, Vector3, Vector3, Vector3)
2、张量增强功能
该 System.Numerics.Tensors 接口现在包括一个非泛型接口IReadOnlyTensor,用于访问Lengths和Strides等操作。 切片操作现在不再复制数据,从而通过提高性能。 此外,当性能不是关键时,您可以通过将其装箱到 object 来访问非泛型数据。
七)选项验证
新的 AOT 安全构造函数 ValidationContext
在选项验证期间使用的 ValidationContext 类包含一个新构造函数重载,该重载显式地接受 displayName 参数:
ValidationContext(Object, String, IServiceProvider, IDictionary<Object,Object>)
显示名称可确保 AOT 安全,并在本机版本中启用其使用,而无需警告。
八)诊断
1、对ActivitySource和Meter中的遥测架构URL的支持
ActivitySource 和 Meter 现在在构造过程中支持指定遥测架构 URL,这与 OpenTelemetry 规范保持一致。 遥测架构可确保跟踪和指标数据的一致性和兼容性。 此外,.NET 10 引入了ActivitySourceOptions,它简化了使用多个配置选项(包括遥测架构 URL)创建ActivitySource实例。
新 API 包括:
- ActivitySource(ActivitySourceOptions)
- ActivitySource.TelemetrySchemaUrl
- Meter.TelemetrySchemaUrl
- ActivitySourceOptions
2、用于活动事件和链接的进程外跟踪支持
该 Activity 类通过跟踪跨服务或组件的作流来启用分布式跟踪。 .NET 支持通过 Microsoft-Diagnostics-DiagnosticSource 事件源提供程序将此跟踪数据进行进程外序列化。 Activity 可以包含其他元数据,例如 ActivityLink 和 ActivityEvent。 .NET 10 增加了对这些链接和事件的序列化支持,因此,外部进程跟踪数据现在包含该信息。
3、速率限制追踪采样支持
当分布式跟踪数据通过 Microsoft-Diagnostics-DiagnosticSource 事件源提供程序在进程外序列化时,可以发出所有记录的活动,或者可以根据跟踪比率应用采样。
名为 “速率限制采样 ”的新采样选项限制每秒序列化的 根活动 数。 这有助于更准确地控制数据量。
进程外跟踪数据聚合器可以通过在FilterAndPayloadSpecs中指定选项来启用和配置此采样。 例如,以下设置将所有实例的序列化限制为每秒 ActivitySource 100 个根活动:
九)ZIP 文件
1、ZipArchive 性能和内存改进
.NET 10 提高了 ZipArchive 的性能和内存使用率。
首先,已经优化了条目在Update模式下写入ZipArchive的方式。 以前,所有 ZipArchiveEntry 实例都加载到内存中并重写,这可能会导致内存使用率和性能瓶颈较高。 优化可减少内存使用率,并避免需要将所有条目加载到内存中,从而提高性能。
其次,条目的 ZipArchive 提取现已并行化,并且内部数据结构经过优化,以便更好地使用内存。 这些改进解决了与性能瓶颈和高内存使用率相关的问题,提高了 ZipArchive 效率和速度更快,尤其是在处理大型存档时。
2、新的异步 ZIP API
.NET 10 引入了新的异步 API,使读取或写入 ZIP 文件时执行非阻塞作更容易。 社区高度要求此功能。
新 async 方法可用于提取、创建和更新 ZIP 存档。 这些方法使开发人员能够有效地处理大型文件并提高应用程序响应能力,尤其是在涉及 I/O 绑定作的方案中。 这些方法包括:
- ZipArchive.CreateAsync(Stream, ZipArchiveMode, Boolean, Encoding, CancellationToken)
- ZipArchiveEntry.OpenAsync(CancellationToken)
- ZipFile.CreateFromDirectoryAsync
- ZipFile.ExtractToDirectoryAsync
- ZipFile.OpenAsync
- ZipFile.OpenReadAsync(String, CancellationToken)
- ZipFileExtensions.CreateEntryFromFileAsync
- ZipFileExtensions.ExtractToDirectoryAsync
- ZipFileExtensions.ExtractToFileAsync
3、GZipStream 中连接流的性能改进
社区的一项贡献改进了 GZipStream 在处理串联 GZip 数据流时的性能。 以前,每个新流段都会处理并重新分配内部 ZLibStreamHandle,这导致额外的内存分配和初始化开销。 通过此更改,该句柄现已重置并重复使用,以减少托管和非托管内存分配并提高执行时间。 处理大量小型数据流时,可以看到影响最大(约 35% 更快)。 这项更改:
- 消除每个串联流大约 64-80 字节内存的重复分配,同时节省额外的非托管内存。
- 减少每个串联流的执行时间大约为 400 纳秒。
三、适用于 .NET 10 的 SDK 和工具中的新增功能
1、修剪由框架提供的包引用
从 .NET 10 开始, NuGet 审核 功能现在可以修剪项目不使用的 框架提供的包引用 。 默认情况下, net 所有目标框架(例如 net8.0 ,和 net10.0)和 .NET Standard 2.0 及更高目标框架都启用此功能。 此更改有助于减少在生成过程中还原和分析的包数,从而缩短生成时间并减少磁盘空间使用量。 这也能够减少来自 NuGet 审计以及其他依赖项扫描机制的误报情况。
启用此功能后,可能会发现应用程序生成的 .deps.json 文件的内容会减少。 .NET 运行时提供的任何包引用都会从生成的依赖项文件中自动删除。
虽然此功能默认为列出的 TPM 启用,但可以通过在RestoreEnablePackagePruning项目文件或 false 文件中将属性设置为禁用此功能。
2、更一致的命令顺序
从 .NET 10 开始, dotnet CLI 工具包含常见命令的新别名,使它们更易于记住和键入。 下表显示了新命令。
新名词优先形式 别名
dotnet package add dotnet add package
dotnet package list dotnet list package
dotnet package remove dotnet remove package
dotnet reference add dotnet add reference
dotnet reference list dotnet list reference
dotnet reference remove dotnet remove reference
新的名词优先表单符合一般 CLI 标准,使 dotnet CLI 与其他工具更加一致。 虽然动词优先表单继续工作,但最好使用名词优先表单来提高脚本和文档中的可读性和一致性。
3、CLI 命令默认为交互式终端中的交互模式
现在,在交互式终端中,默认启用 --interactive 标志用于 CLI 命令。 此更改允许命令动态检索凭据或执行其他交互行为,而无需显式设置标志。 对于非交互方案,可以通过指定 --interactive false来禁用交互性。
4、原生 shell 制表符补全脚本
dotnet CLI 现在支持使用dotnet completions generate [SHELL]命令为常用 shell 生成原生自动补全脚本。 支持的 shell 包括bash、fish、nushell和powershellzsh。 这些脚本通过提供更快、更集成的选项卡完成功能来提高可用性。
5、控制台应用可以原生创建容器映像
控制台应用现在可以通过 dotnet publish /t:PublishContainer 创建容器映像,而无需在项目文件中包含 <EnableSdkContainerSupport> 属性。 这使控制台应用与 ASP.NET Core 和 Worker SDK 应用的行为保持一致。
6、显式控制容器的图像格式
使用新的 <ContainerImageFormat> 属性可以显式地将容器映像的格式设置为 Docker 或 OCI。 此属性替代默认行为,具体取决于基本映像格式以及容器是否为多体系结构。
7、对 Microsoft 测试平台的支持 dotnet test
从 .NET 10 开始,dotnet test 原生支持 Microsoft.Testing.Platform。
四、C# 14
C# 14 引入了多项新功能和增强功能,以提高开发人员的工作效率和代码质量。 关键更新包括:
1、基于字段的属性为从自动实现属性到编写自定义 get 和 set 访问器提供了一条更流畅的路径。 可以使用上下文关键字访问编译器生成的后盾字段 field 。
2、表达式 nameof 现在支持未绑定的泛型类型,例如 List<>,它返回类型的名称而无需类型参数。
3、对 Span<T> 和 ReadOnlySpan<T> 的隐式转换提供一流支持。
4、参数修饰符(例如 ref、in 或 out)在 lambda 表达式中允许使用,并且无需指定参数类型。
5、支持部分实例构造函数和部分事件,补充 C# 13 中引入的部分方法和属性。
6、新 extension 块添加了对静态扩展方法的支持,以及静态和实例扩展属性。
7、使用 ?. 运算符的空值条件赋值。
五、F#
.NET 10 中的 F# 更新包括语言、标准库和编译器服务的多项新功能和改进。 关键更新包括:
1、F# 语言:
新的语言功能需要在文件中启用 <LangVersion>preview</LangVersion> 项目属性 .fsproj 。 这些功能成为 .NET 10 版本的默认功能。
2、FSharp.Core 标准库:
FSharp.Core 标准库的更改会自动应用于使用新 SDK 编译的项目,除非显式了固定较低的 FSharp.Core 版本。
3、FSharp.Compiler.Service:
编译器实现中的常规改进和 bug 修复。
六、Visual Basic
.NET 10 中的 Visual Basic 更新包括编译器的以下增强功能:
1、编译器现在解释并强制实施 unmanaged 泛型约束,从而更好地与运行时 API 兼容。
2、编译器遵循 OverloadResolutionPriorityAttribute. 此增强功能确保优先采用 Span 基重载,并有助于解决重载歧义。
这些更新可确保 Visual Basic 可以在 C# 和运行时中使用更新的功能。
七、.NET MAUI
.NET 10 中的 .NET MAUI 更新包括适用于 .NET MAUI、适用于 Android 的 .NET 以及适用于 iOS、Mac Catalyst、macOS 和 tvOS 的 .NET 的多项新功能和质量改进。
八 、EF Core
EF Core 10 版本引入了多项新功能和改进,包括 LINQ 增强、性能优化和对 Azure Cosmos DB 的支持。
九、Windows 窗体
适用于 .NET 10 的 Windows 窗体的更改包括从 .NET Framework 移植 UITypeEditors 的剪贴板相关更新和质量改进。
十、WPF(Windows Presentation Foundation)
.NET 10 中的 WPF 更新包括多项性能改进、Fluent 样式更改、bug 修复等。
软件亮点
一、跨平台
借助 .NET,可以面向在任何平台上运行的任何应用程序类型。开发者可以在熟悉的环境中在其之间重复使用技能和代码。
支持的平台包括但不限于 Windows、macOS、Linux、Android、iOS、Xbox、PlayStation 和 Nintendo 设备。
.NET 支持跨云和在线服务,帮助在同一平台上扩展游戏。
二、大型 C# 社区
C# 是一种简单、新式、面向对象且类型安全的编程语言,它是游戏开发中最常用的编程语言。
从社区、MVP 和大型支持组织处寻找技术挑战的答案。
三、丰富的生态系统
500 多万名开发者将 .NET 用于多个工作负载,其中具有正常的支持网络和遍布全球的活跃社区。
从游戏成品到线上服务和移动应用,.NET 能够在整个游戏开发周期内使用。
使用 Microsoft Azure PlayFab 等现成的游戏服务,使用 Microsoft Azure 在基础结构上生成你自己的服务,或选择任何其他云服务提供商。
四、使用 .NET 执行
大家在多个不同平台上最爱的许多游戏大作和其他内容,都是使用 .NET 和 C# 制作的。
其它版本下载
-
查看详情
微软.net 8 v8.0.410 32位64位
212.73M
-
查看详情
微软.net 9正式版 v9.0.300 32位64位
216.96M
同厂商
微软(中国)有限公司更多+office2016破解版 2.64G
win11安卓子系统 v2407.40000.4.0官方版1.36G
.net修复工具(Microsoft .NET Framework Repair Tool) v4.6.15281.12M
vs2019中文破解版 v16.0.28729.10正式版1.13M
onedrive电脑版 v25.75.420.2官方版81.9M
directx redist多国语言版 v9.29.197495.63M
极限竞速地平线5电脑版 v1.685.421免安装版176.71G
星空Starfield豪华中文版 v1.15.216.0绿色版111.33G
废土3中文版 v1.6.1.307772免安装绿色版22.26G
我的世界传奇中文版 v1.18.1435012.09G
重返德军总部单机版 v2.0.0.2GOG版640.33M
国际象棋电脑版 绿色版22.56M
发表评论
0条评论软件排行榜
热门推荐
猿编程电脑版 v5.3.0官方版232.61M / 简体中文
RubyMine2025电脑版 v2025.1.1官方版733.54M / 多国语言[中文]
橙光制作工具电脑版 v3.1.101.05M / 简体中文
jetbrains fleet编辑器 v1.48.236官方版98.24M / 多国语言
phpstorm2023官方版 v2023.3.8459.1M / 简体中文
idea2023官方版 v2023.3.8677.88M / 简体中文
jetbrains rider 2024(C语言编辑开发工具) v2024.3.5官方版1.44G / 英文
WPLSoft(台达PLC编程软件) v2.5281.16M / 简体中文
pspad editor官方版 v5.0.7.775绿色版25.52M / 多国语言[中文]
PHP Coder汉化版 v1.01018K / 简体中文