.NET中文官方博客
免费、 跨平台、 开源。一个用于构建所有应用程序的开发人员平台
Latest posts
.NET 9 中System.Text.Json 的新增功能
本篇翻译于Eirik Tsarpalis的 What's new in System.Text.Json in .NET 9 - .NET Blog System.Text.Json的9.0 版本包含许多功能,主要侧重于 JSON 架构和智能应用程序支持。它还包括一些备受期待的增强功能,例如可空引用类型支持、自定义枚举成员名称、无序元数据反序列化和自定义序列化缩进。 获取最新信息 您可以通过引用 System.Text.Json NuGet 包的最新版本或 .NET 9 的最新 SDK 来尝试新功能。 JSON 架构导出器 新的 JsonSchemaExporter 类可以使用 JsonSerializerOptions 或 JsonTypeInfo 实例从 .NET 类型中提取 JSON 架构文档: 生成的模式为该类型提供了JSON序列化契约的规范。从这个例子中可以看出,它区分了可空属性和不可空属性,并根据构造函数参数是否可选来填充“required”关键字。模式的输出可以通过在 JsonSerializerOptions 或 JsonTypeInfo 实例中指定的配置进行影响: 用户可以使用 JsonSchemaExporterOptions 配置类型进一步控制生成的模式: 最后,用户可以通过指定 TransformSchemaNode 委托, 对生成的架构节点应用自己的转...
加入 .NET 智能组件生态系统
本篇翻译于首席产品经理 Daniel Roth 的Join the .NET Smart Components ecosystem - .NET Blog (microsoft.com) .NET 智能组件是一组示例嵌入式 UI 组件,使得在应用中轻松添加 AI 启用的功能变得更加简单,例如从剪贴板数据自动填写表单、智能文本补全以及语义搜索等场景。.NET 智能组件演示了如何将基于 AI 的功能预先打包成可重用的组件,从而更容易将这些功能集成到现有应用程序中。我们将 .NET 智能组件源代码作为参考示例实现提供,以帮助启动一个充满活力的可重用 .NET AI 驱动组件生态系统。 现已开源 .NET 智能组件在 GitHub 上的 dotnet/smartcomponents repo 中有了新家,其中包含实现源代码、文档和示例应用程序。库作者可以使用示例组件来获得灵感,并将其作为如何打包 AI 驱动功能以方便使用的参考实现。如果您对如何改进 .NET 智能组件有想法,或者对希望添加的新 AI 组件有想法,请通过在 GitHub 上提出问题与我们分享。 使用语义内核的局部嵌入 .NET 智能组件包含用于在您的服务器上本地计算嵌入 (LocalEmbeddings)的示例便捷 API。这些API可用于比较文本的语义相似性。这些 API 现已更新,以将基于 ONNX 的嵌入支持包装在语义内核...
推出适用于 .NET 的官方OpenAI库的稳定版本
本篇翻译于.NET 团队的Announcing the stable release of the official OpenAI library for .NET - .NET Blog (microsoft.com) 早在 6 月份,我们就推出了适用于 .NET 的OpenAI 库的第一个测试版,使开发人员能够将高级 AI 模型集成到他们的应用程序中。今天,我们很高兴地宣布,适用于.NET 的官方 OpenAI 库的稳定版本现已上线。此版本可确保开发人员在其 .NET 应用程序中使用 OpenAI 和 Azure OpenAI 服务时获得顺畅可靠的集成体验。 主要特点 适用于.NET 的官方 OpenAI 库提供了强大的工具,可简化将 OpenAI 的高级模型集成到 .NET 应用程序中的过程,从而为开发人员提供简洁流畅的体验: 此官方 .NET 库可确保与 OpenAI 和 Azure OpenAI 的顺利集成并获得支持。它还补充了 OpenAI 面向 Python 和 TypeScript/JavaScript 开发人员的官方库。 该库是开源的,在 GitHub 上开发和支持。它将与 OpenAI 的最新功能保持同步。 示例代码 以下是在 .NET...
使用 MSTest.Analyzers 增强您的测试体验
本篇翻译于Jakub Jareš的Supercharge your testing experience with MSTest.Analyzers - .NET Blog (microsoft.com) MSTest 附带一组分析器,用于检查您的测试代码并指出常见的错误和陷阱。这些错误可能很微妙,并导致测试框架完全忽略您的测试。 我们从 3.2.0 版本就开始提供这些分析器了,但在最新的 3.5.1 版本中,我们添加了一些我们认为您不应错过的分析器。 遗漏的测试 一个常见问题是当您忘记在类上添加 [TestClass] 时。MSTest 将无法知道类中有测试,也不会运行它们: 如果没有 MSTest.Analyzers,此代码在构建时不会出现警告或信息提示。运行测试时也不会出现测试失败的情况。由于类上没有 [TestClass] 属性,MSTest 会出于性能原因跳过整个类,并且您的测试将永远不会被找到。 但是使用分析器时您会在构建过程中收到一条信息提示: 我们建议将此信息提示升级为警告,甚至是构建错误。可以通过在 .editorconfig 文件中添加以下这行代码来实现 为什么默认情况下这不是警告? 您可能会问为什么 MSTEST0030 默认是一条信息提示而不是默认的警告。原因是我们不能在 MSTest v3 中引入重大变更,而上述代码是一个常见的...
.NET 9 预览版 6:新功能抢先看
本篇翻译于.NET Team的.NET 9 Preview 6 is now available! 现在是了解最新 .NET 9 预览版的好时机!我们刚刚发布了第六个预览版,在之前预览版的基础上添加了一些很棒的功能,并对 .NET Runtime、SDK、库、C# 和框架(包括 ASP.NET Core、Blazor 和 .NET MAUI)进行了重大改进。请查看下面链接的完整发行说明并立即开始使用。 下载 .NET 9 Preview 6 此版本包含以下改进: 📚库: ⏱️Runtime: 🛠️SDK 您可以在下面找到有关 .N...
C# 13:探索最新的预览功能
本篇翻译于Kathleen Dollard 的C# 13: Explore the latest preview features - .NET Blog (microsoft.com) C# 13 已初具雏形,其新特性侧重于灵活性、性能以及使您最喜欢的功能在日常中变得更容易使用。我们以公开的方式构建 C#,在今年的 Microsoft Build 大会上,我们会让您一睹 C# 13 的精彩之处。今天,我们想分享一下C# 13 当前的状态,以及您今天就可以尝试的新功能,并提供有关此版本及以后计划中的功能更新。让我们更详细地了解这些新功能。 立即试用 C# 13 在我们深入研究 C# 13 的每个新功能之前,您可能想知道如何使用它。 您可以在最新的 .NET 9 预览版(撰写本文时为预览版 6)和 Visual Studio 2022-17.11 的最新预览版中找到 C# 13 的最新预览版。若要访问预览功能,请在项目文件中将您的语言版本设置为preview: params集合 C# 13扩展了 params关键字,使其适用于可以通过集合表达式构造的任何类型。无论是编写方法还是调用方法,都增加了灵活性。 当 params 关键字出现在参数之前时,对该方法的调...
C#12新功能合集四:使用默认 lambda 参数重构C#代码
本文翻译于David Pine的这篇文章:Refactor your code with default lambda parameters 。 本文是探讨 C# 12的各种功能的四篇系列文章中的最后一篇。在这篇文章中,我们将探讨“默认 lambda 参数”功能,使开发人员能够在 lambda 表达式中使用默认参数值。本系列涵盖了很多内容: 这些功能是我们不断努力提高代码可读性和可维护性的一部分。让我们详细探索它们! 默认 Lambda 参数🧮 默认 lambda 参数是 C# 12 中的一项新功能,允许开发人员在 lambda 中表达默认参数值。此功能是 C# 方法中现有默认参数功能的自然扩展。 C# 12 之前🕰️ 在 C# 12 之前,当您定义需要提供某种默认行为的 lambda 表达式时,您必须使用空合并运算符 (??) 或条件运算符 (?:)。请查看以下示例: 使用 C# 12 🤓 相反,使用默认 lambda 参数后,您可以直接在 lambda 表达式中定义 lambda 参数的默认值。默认 lambda 参数的语法类似于方法中默认参数的语法。默认值在参数名称和等号 (=) 后指定。请查看以下示例: 当涉及默认参数时,Lambda 表达式遵循与方法相同的规则。默认值必须是编译时常量,并...
Visual Studio Code 的 .NET MAUI 扩展现已正式发布
本篇翻译于Maddy Montaquila的The .NET MAUI Extension for Visual Studio Code is now Generally Available 今天,我们非常高兴地宣布 .NET MAUI VS Code 扩展插件结束了预览阶段,并将包含一些期待已久的新功能 - 包括 XAML IntelliSense 和 Hot Reload! 什么是 .NET MAUI 扩展插件? .NET MAUI 扩展插件为您提供了在轻量级 Visual Studio Code 中开发 .NET MAUI 应用所需的工具。它基于C# Dev Kit 和 C# 扩展构建,提供了解决方案资源管理器、C# Hot Reload、强大的 C# IntelliSense 等众多功能。.NET MAUI 扩展增加了针对移动设备和桌面设备的能力,此外,借助最新版本的扩展,增加了 XAML IntelliSense 和 XAML Hot Reload,同时让您的 VS Code 体验更加精简和简单。 全新的和改进的 XAML 编辑体验 .NET MAUI 扩展的预览版附带了基本的 XAML 语法高亮显示和自动补全功能,但它与我们想要交付的完整体验相距甚远。在过去的一年里,我们对 Visual Studio 中现有的 XAML 语言服务进行了现代化改造,将其打包,并带到 VS Code中以供您进行...
C#12新功能合集三:使用任意类型别名重构C#代码
本文翻译于David Pine的这篇文章: Refactor your code using alias any type。 这篇文章是四篇系列文章中的第三篇,主要探讨C# 12的各种功能。在这篇文章中,我们将深入探讨“别名任何类型”功能,该功能允许您使用 using 指令为任何类型创建别名。这个系列已经初具规模: 所有这些功能都将继续我们的旅程,使我们的代码更具可读性和可维护性,这些被认为是开发人员应该知道的“日常 C#”功能。让我们深入了解吧! 别名任意类型*️⃣ C# 12 引入了使用 using 指令为任意类型添加别名的功能。此功能允许您指定映射到其他类型的别名。这包括元组类型、指针类型、数组类型,甚至非开放泛型类型,所有这些类型都可以在您的代码中使用。此功能在以下场景特别有用: 官方 C# 文档提供了很多有关如何使用此功能的示例,但我并不想在此重复这些示例,而是决定编写一个演示应用程序来示范该功能的各个方面。 可空引用类型 此功能支持大多数类型,但可空引用类型除外。也就是说,您无法为可空引用类型设置别名, C# 编译器会报告错误 CS9132:使用的别名不能是可空引用类型。以下内容摘自功能说明,以帮助澄清这一点: 示例应用程序:UFO...