.NET中文官方博客

免费、 跨平台、 开源。一个用于构建所有应用程序的开发人员平台

Latest posts

Jan 17, 2025
Post comments count 0
Post likes count 0

.NET Aspire小贴示 – 管理容器和数据生命周期

Eddie Chen

本文翻译自 James Montemagno 的 .NET Aspire Quick Tip – Managing Container & Data Lifetime .NET Aspire 凭借其强大的应用程序组合编排功能增强了本地开发流程。在 .NET Aspire 应用程序主机中,您可以在一个集中位置为应用程序指定所有项目、可执行文件、云资源和容器。当您运行应用程序主机项目时,.NET Aspire 将自动运行您的项目和可执行文件,根据需要配置云资源,并下载和运行应用程序依赖的容器。.NET Aspire 9 添加了新功能,让您可以更好地控制在本地计算机上管理容器生命周期的方式,从而在使用容器时加快开发速度。 .NET Aspire 容器 让我们看一个简单的 .NET Aspire 应用程序主机示例,该示例创建一个本地 Redis 容器资源,等待其可用后,为 Web 项目配置连接字符串: 当 App Host 启动后,对 的调用将下载相应的 Redis 镜像。 它还会创建一个新的 Redis 容器并自动运行它。 当我们停止调试 App Host 时,.NET Aspire 会自动停止所有项目,同时停止 Redis 容器并删除通常用于存储数据的关联卷。 容器生命周期 虽然上述方式适用于许多场景,但如果容器没有任何更改,您可能会希望容器始终保持运行,而不受 App ...

Jan 9, 2025
Post comments count 0
Post likes count 0

通过 .NET Aspire 使用本地 AI 模型

Eddie Chen

本文翻译自Aaron Powell的Using Local AI models with .NET Aspire 使用本地 AI 模型是在您自己的计算机上进行实验的一个很好的方法,它无需将资源部署到云中。在本文中,我们将了解如何使用.NET Aspire 和 Ollama 在本地运行 AI 模型,同时使用 Microsoft.Extensions.AI 抽象使其在部署时过渡到云托管模型。 在 .NET Aspire 中设置 Ollama 我们需要某种方法来从 .NET Aspire 应用程序中使用 Ollama,最简单的方法就是使用 .NET Aspire 社区工具包中的 Ollama 托管集成。您可以通过 Visual Studio 工具、VS Code 工具或 .NET CLI 从 NuGet 安装 Ollama 托管集成。让我们看一下如何通过命令行将 Ollama 托管集成安装到我们的应用程序主机项目中: 安装 Ollama 托管集成后,您可以在 文件中对其进行配置。以下是如何配置 Ollama 托管集成的示例: 这里,我们使用 扩展方法将容器添加到应用程序主机。由于我们需要下载一些模型,因此我们希望在容器重启后保留该数据量(这意味着我们不必在每次启动容器时都要重新获取好几 GB 的数据!)。此外,我们有了一个测试环境,我们将添加 容器,来为我们提供一个在应用程序之外与模型进行交互的网页界面...

Jan 2, 2025
Post comments count 0
Post likes count 0

探索Microsoft.Extensions.VectorData与Qdrant和Azure AI搜索的使用

Eddie Chen

本文翻译自Bruno Capuano的Exploring Microsoft.Extensions.VectorData with Qdrant and Azure AI Search 了解如何使用 Microsoft.Extensions.VectorData并通过 Qdrant 和 Azure AI 搜索实现语义搜索。 使用 Microsoft.Extensions.VectorData 深入了解语义搜索:Qdrant 和 Azure AI 搜索 语义搜索正在改变应用程序查找和解释数据的方式,它专注于含义,而不仅仅是关键字匹配。随着 Microsoft.Extensions.VectorData 的发布,.NET 开发人员拥有了一组新的构建模块,用于将基于向量的搜索功能集成到其应用程序中。在本文中,我们将探讨使用本地Qdrant和Azure AI搜索这两种实现方式来进行语义搜索。 Microsoft.Extensions.VectorData 快速介绍 Microsoft.Extensions.VectorData 是一组 .NET代码库,旨在管理 .NET 应用程序中基于向量的数据。这些库为与向量存储交互提供了一个统一的 C# 抽象层,使开发人员能够有效地处理嵌入并执行向量相似性查询。 要详细了解该库的架构和功能,推荐阅读 Luis 的精彩博客文章。 在这篇博客文章中,我们将展示两个实际用例:...

Dec 19, 2024
Post comments count 0
Post likes count 0

使用 Dependabot 管理 .NET SDK 更新

Eddie Chen

本文翻译自微软高级软件工程师 Jamie Magee 的Using Dependabot to Manage .NET SDK Updates 保持 .NET SDK 处于最新版本对维护安全高效的应用程序至关重要。现在,Dependabot 可以更新 global.json 中的 .NET SDK 版本,这使您可以比以往更轻松地确保自己的应用程序始终运行最新的安全补丁和改进。 定期的更新 SDK非常重要,因为它们包含: 使用 global.json 管理 SDK 版本 要管理您的 .NET SDK 版本,您通常会在项目中使用 global.json 文件。此文件会指定项目应使用哪个版本的 SDK。以下是一个简单的 global.json 文件示例: 如果您正在使用 GitHub Actions以及 dotnet/setup-dotnet ,此文件将确保在您的 CI/CD 管道中使用了正确的 SDK 版本。 配置 Dependabot 以进行 .NET SDK 更新  添加一个文件到您代码仓库默认分支的路径下。如果您希望始终接收最新更新,最简单的配置如下所示: 但是 .NET SDK 更新通常在“补丁星期二”(每月的第二个星期二)发布,因此您可能希望调整更新计划以每周仅检查一次更新。您可以通过添加部分来实现: 此外,如果您只想关注安全补丁,可以忽略主要和次要...

Dec 12, 2024
Post comments count 0
Post likes count 0

dotnet scaffold – .NET的下一代内容创建工具

Eddie Chen

本文翻译自微软首席产品经理Sayed Ibrahim Hashimi的dotnet scaffold - Next Generation Content Creation for .NET 。  在Visual Studio中,用于ASP.NET Core项目的Scaffolding是一个已经存在很久的功能,它在ASP.NET Core发布之后不久就已经添加。我们多年来也一直支持从命令行里进行Scaffolding。从命令行的使用体验中,我们听到了许多用户的反馈,他们希望我们为Scaffolding提供一个交互式的命令行界面 (CLI)。为此目标,我们一直在开发一个新的交互式CLI工具 。这个工具现在已经做为预览版发布。在这边文章中,我们将描述如果获取和使用这个新的命令行工具。此工具是开源的,您可以在scaffolding存储库 中查看代码。该存储库包含了 工具的代码以及其他scaffolding相关的代码。 安装dotnet scaffold 我们将使用 dotnet tool 命令来安装此工具。您可以执行以下的命令来安装最新发布的版本: 如需安装特定的版本,请访问nuget.org上的软件包。有关如果管理dotnet工具的更多信息,请参阅 .NET 工具 – .NET CLI | Microsoft Learn 上的文档。在上面的命令中,我们正在全局安装该工具,但是您也可以将工具安装到本地文件夹...

Nov 3, 2024
Post comments count 0
Post likes count 0

.NET 9 中System.Text.Json 的新增功能 

Mia Wu

本篇翻译于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 委托, 对生成的架构节点应用自己的转...

Oct 17, 2024
Post comments count 0
Post likes count 1

加入 .NET 智能组件生态系统 

Mia Wu

本篇翻译于首席产品经理 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 的嵌入支持包装在语义内核...

Oct 17, 2024
Post comments count 0
Post likes count 0

推出适用于 .NET 的官方OpenAI库的稳定版本

Mia Wu

本篇翻译于.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...

Aug 29, 2024
Post comments count 0
Post likes count 3

使用 MSTest.Analyzers 增强您的测试体验

Mia Wu

本篇翻译于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 中引入重大变更,而上述代码是一个常见的...