.NET 10 dnx 登场,开启 .NET 的 “npx/uvx“ 时代
.NET 10 dnx 登场.NET 的 npx/uvx 时代拉开序幕在快速发展的软件开发领域敏捷性和效率至关重要。开发者需要能够快速尝试新工具、运行特定任务而无需繁琐的安装或环境配置。Python 的uvx和 Node.js 的npx等工具因其“一次性”执行能力而广受赞誉它们允许开发者按需运行命令行工具极大地简化了工作流程。.NET 10 通过引入dnx工具执行脚本这一新功能使.NET 直接与 Python 和 Node.js 等生态系统中备受推崇的流畅“一次性”执行和快速本地启动能力对齐。即时执行的力量dnx vs uvx vs npxdnx以及dotnet tool exec的引入明确地将.NET 的工具执行体验与 Python 的uvx和 Node.js 的npx对齐。这三者都遵循“无需安装即可运行”的核心理念旨在提供无摩擦的开发者体验。.NET 的 dnx.NET 10 SDK 引入了新的dnx工具执行脚本。dnx 其本质上是dotnet tool exec命令的一个精简、用户友好的包装器其核心功能是实现.NET 工具的“一次性”one-shot或“按需”on-demand执行。 这意味着开发者可直接从 NuGet 包运行.NET 工具而无需进行永久性的本地或全局安装 。当调用dotnet tool exec或 dnx时工具包会被临时下载到 NuGet 缓存中并直接从那里执行。这种关键的设计选择意味着系统的 PATH 环境变量不会被修改从而确保了干净和隔离的执行环境。 在版本管理方面默认情况下会使用指定工具包的最新版本。然而开发者也可以明确请求特定版本例如toolsay0.2.0。如果当前目录或其任何父目录中存在本地工具清单文件.config/dotnet-tools.json则该配置中指定的工具版本将优先使用从而确保项目特定的一致性。Python 的 uvxuvx 是 uv 包管理器的一部分旨在解决 Python 包管理中的痛点如安装时间慢和依赖冲突。 uvx 允许在不永久安装工具的情况下调用工具将其安装到临时、隔离的环境中。它支持指定特定版本、额外功能以及从 Git 仓库拉取工具 。 uv 的 Rust 实现使其在性能上远超 pip并且内置了虚拟环境管理功能。Node.js 的 npxnpx 的主要目的是执行 Node.js 包的二进制文件而无需全局或本地安装该包。它会临时下载包运行指定的命令然后自行清理。 npx 广泛用于运行一次性命令、搭建新项目例如 npx create-react-app、执行本地安装的项目二进制文件、尝试不同包版本甚至直接从 GitHub 仓库或 Gist 执行代码。三者对比属性dnx (.NET 10)uvx (Python)npx (Node.js)核心理念按需执行 NuGet 工具无安装污染按需执行 PyPI 工具无安装污染按需执行 npm 包无安装污染执行模型下载到隔离 NuGet 缓存执行不修改 PATH安装到临时隔离虚拟环境执行临时下载执行并清理版本控制支持指定版本优先本地清单支持或指定版本支持指定版本底层技术/生态基于成熟dotnetCLI、NuGet、MSBuild (C)uv(Rust 高性能统一工具链) 的一部分与npm捆绑 (JavaScript)生态整合/影响发展中旨在培育 NuGet CLI 工具生态统一工具链(uv)旨在取代pip/pipx等深度成熟重塑了 Node.js CLI 工具分发模式主要用例工具试用、脚手架、CI/CD、临时服务工具试用、环境管理脚手架、临时服务器、尝试版本dnx 上手实操基于 dotnet-execute 工具❝dotnet-execute(https://github.com/WeihanLi/dotnet-exec是一个用于在没有项目文件的情况下执行 C# 程序的命令行工具你可以使用自定义的入口点而不是 Main 方法。控制台输出 dnx dotnet-execute WriteLine(\Hello dnx!!!\); --using static System.Console Hello dnx!!!快速生成 GUID 或执行简单表达式 dnx dotnet-execute Guid.NewGuid() -y [c1b1e7e4-7004-430f-b81d-3808cc782a4d]使用 LoadTestToolbox 工具❝LoadTestToolbox轻量级压测工具支持三种测试模式drill稳定性测试、hammer并发性能测试、nailgun瞬时压力测试结果可输出为图表测试百度首页的并发性能1~100个并发请求 dnx LoadTestToolbox hammer --url https://www.baidu.com --min 1 --max 100 --filename hammer.png Tool package loadtesttoolbox2.0.0 will be downloaded from source https://api.nuget.org/v3/index.json. Proceed? [y/n] (y): Y Sending/receiving requests ━━━━━ 100% [ 00:00:01 elapsed / 00:00:00 remaining ]测试百度首页的瞬时性能瞬间发起100个请求 dnx LoadTestToolbox nailgun --url https://www.baidu.com --requests 100 --filename nailgun.png Sending/receiving requests ━━━━━━━━ 100% [ 00:00:00 elapsed / 00:00:00 remaining ]使用 json2yaml 工具❝json2yaml一个简单的工具用于将JSON转换为YAML。 2yaml转换器读取JSON输入来自文件、URL端点或stdin并生成转换后的YAML输出到文件或stdout。PS : cat .\.mcp\server.json { description: 一个带有天气、随机数和待办工具的示例MCP服务器, name: io.github.sheng-jie/SampleMcpServer, packages: [ { registry_name: nuget, name: sheng-jie.SampleMcpServer, version: 0.3.0, package_arguments: [], environment_variables: [ { name: WEATHER_CHOICES, description: 以逗号分隔的天气描述列表, is_required: true, is_secret: false } ] } ], repository: { url: https://github.com/sheng-jie/SampleMcpServer, source: github }, version_detail: { version: 0.3.0 } } PS dnx json2yaml -i:.\.mcp\server.json -c Tool package json2yaml6.0.0 will be downloaded from source https://api.nuget.org/v3/index.json. Proceed? [y/n] (y): Y description: 一个带有天气、随机数和待办工具的示例MCP服务器 name: io.github.sheng-jie/SampleMcpServer packages: - registry_name: nuget name: sheng-jie.SampleMcpServer version: 0.3.0 package_arguments: [] environment_variables: - name: WEATHER_CHOICES description: 以逗号分隔的天气描述列表 is_required: true is_secret: false repository: url: https://github.com/sheng-jie/SampleMcpServer source: github version_detail: version: 0.3.0使用 dotnet-decode-jwt 工具❝dotnet-decode-jwt :用于解码JSON Web Token声明的.NET全局工具 dnx dotnet-decode-jwt eyJhbGciOiJub25lIn0.ewogICAgImlzcyI6ICJiZXN0LWlzc3VlciIsCiAgICAic3ViIjogIm5pY2Utc3ViamVjdCIsCiAgICAiYXVkIjogWyJhdWRpZW5jZS1vbmUiLCAiYXVkaWVuY2UtdHdvIl0sCiAgICAiZXhwIjogMTUyODY5MTM1MCwKICAgICJuYmYiOiAxNTI4NjkwNzUwLAogICAgImlhdCI6IDE1Mjg2OTA3NTAsCiAgICAianRpIjogImMzMTk3ZGNiLWUxMTMtNDc3OC04OTc5LWI5NTZmNjg0MDA3ZiIsCiAgICAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvZW1haWxhZGRyZXNzIjogImhpQG1lLmNvbSIsCiAgICAic29tZS1udW1iZXIiOiAxMi41NiwKICAgICJuZXN0ZWQtY2xhaW0iOiB7CiAgICAgICAgImhpIjogIkknbSIsCiAgICAgICAgImEiOiAibmVzdGVkIGNsYWltIgogICAgfQp9Cg. -y Expiration Time (exp): Monday, June 11, 2018 04:29:10 UTC / Monday, June 11, 2018 12:29:10 (UTC08:00) Beijing, Chongqing, Hong Kong, Urumqi Not Before (nbf): Monday, June 11, 2018 04:19:10 UTC / Monday, June 11, 2018 12:19:10 (UTC08:00) Beijing, Chongqing, Hong Kong, Urumqi Issued At (iat): Monday, June 11, 2018 04:19:10 UTC / Monday, June 11, 2018 12:19:10 (UTC08:00) Beijing, Chongqing, Hong Kong, Urumqi Claims are: { iss: best-issuer, sub: nice-subject, aud: [ audience-one, audience-two ], exp: 1528691350, nbf: 1528690750, iat: 1528690750, jti: c3197dcb-e113-4778-8979-b956f684007f, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress: hime.com, some-number: 12.56, nested-claim: { hi: Im, a: nested claim } }最后令人期待和振奋的.NET 10.NET 10 中 dnx 的引入和 dotnet tool exec 的增强是.NET 工具链现代化进程中的一个里程碑。它不仅在功能上与uvx和npx等现代工具执行器对齐更重要的是它将“一次性”执行的敏捷性带入了.NET 生态系统。这种转变将.NET 定位为一个更具竞争力的平台为开发者提供了前所未有的灵活性和效率。展望未来可以预见随着这些功能的成熟和普及NuGet 上将出现一个蓬勃发展的.NET 工具新类别进一步巩固.NET 作为构建复杂、现代化应用程序的首选平台的地位。

相关新闻

PDF-Extract-Kit-1.0在财务报告自动化处理中的妙用

PDF-Extract-Kit-1.0在财务报告自动化处理中的妙用

PDF-Extract-Kit-1.0在财务报告自动化处理中的妙用 1. 财务报告处理的痛点与解决方案 财务部门每天都要处理大量的PDF格式财务报告,这些文档包含复杂的表格数据、关键财务指标和重要公式。传统的手工处理方式效率低下且容易出错,特别是当需要从上百页的…

2026/5/17 5:48:57 阅读更多 →
HsMod:炉石传说功能增强工具的技术实现与应用指南

HsMod:炉石传说功能增强工具的技术实现与应用指南

HsMod:炉石传说功能增强工具的技术实现与应用指南 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 理解HsMod的核心价值与技术架构 HsMod作为基于BepInEx框架的炉石传说功能扩展工具&…

2026/5/17 5:48:56 阅读更多 →
HsMod:炉石传说游戏体验增强工具技术解析

HsMod:炉石传说游戏体验增强工具技术解析

HsMod:炉石传说游戏体验增强工具技术解析 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod作为一款基于BepInEx框架开发的炉石传说游戏体验增强工具,旨在通过模块化设…

2026/7/3 20:54:25 阅读更多 →

最新新闻

基于YOLOv11的果树害虫智能识别系统开发与优化

基于YOLOv11的果树害虫智能识别系统开发与优化

1. 项目概述:基于YOLOv11的果树害虫智能识别系统去年在果园实地调研时,我发现果农们仍在用最原始的方法识别害虫——拿着放大镜一片叶子一片叶子地检查。这种低效的识别方式直接导致虫害防治的滞后性,往往发现时已经造成不可逆的损失。这正是…

2026/7/4 23:43:22 阅读更多 →
如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

一、第一刀:为什么大多数人只能“能聊天”,不能“被找聊”? 因为他们停留在:被动对话系统✔ 特征: 别人发起你回应你维持但不会“积累吸引力”👉 本质:只是“对话节点”,不是“对话源…

2026/7/4 23:41:22 阅读更多 →
基于Playwright与MCP协议实现浏览器自动化与手动操作协同

基于Playwright与MCP协议实现浏览器自动化与手动操作协同

1. 项目概述:当自动化脚本遇上你的手动操作在浏览器自动化测试和爬虫开发的日常里,我们常常面临一个尴尬的割裂:一边是精心编写的Playwright脚本,在无头模式下高效、稳定地执行任务;另一边,则是我们自己手动…

2026/7/4 23:39:21 阅读更多 →
通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

具体实现 第一部分 ActiveX插件的实现 1) 创建一个新的解决方案,叫做MyFirstKinect。 2)接着创建一个Windows窗体控件库,用于做ActiveX的插件,项目叫做MyFirstKinectControl 3)在MyFirstKinectControl项目…

2026/7/4 23:39:21 阅读更多 →
Coze平台AI Agent开发实战与优化技巧

Coze平台AI Agent开发实战与优化技巧

1. Coze平台与AI Agent开发概述作为一名长期从事AI应用开发的工程师,我最近深度体验了Coze平台在AI Agent开发中的实际表现。这个由字节跳动推出的开发平台确实为不同技术背景的用户提供了一种全新的AI应用构建方式。与传统开发模式相比,Coze最显著的特点…

2026/7/4 23:39:21 阅读更多 →
机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

1. 这不是“跑通模型”就完事的课——它讲的是模型怎么在真实业务里活下来“From Notebook to Production: Running ML in the Real World (Part 4)”这个标题,光看前半句,很多人会下意识划走:又一个讲MLOps流程的泛泛而谈?但关键…

2026/7/4 23:37:20 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻