First Blog Post
如果你刚开始学习 C# 和 .NET,一定会频繁遇到一个词——NuGet。它几乎是每个 .NET 项目都离不开的工具。那么,NuGet 究竟是什么?这个奇怪的名字又是怎么来的?这篇文章将一次性讲清楚。
一、NuGet 是什么?
NuGet 是 .NET 平台的包管理器。通俗地说,它就是一个 “代码超市”。
在开发软件时,很多常见功能(比如解析 JSON、操作 Excel、连接数据库)其实不需要你从头编写。社区和微软已经提供了大量高质量、经过测试的代码库(称为“包”)。NuGet 的任务就是帮你 找到、下载、安装、更新 这些包,并自动处理它们之间的依赖关系。
NuGet 的核心功能
-
安装第三方库
假设你需要处理 JSON 数据。如果没有 NuGet,你需要去官网下载Newtonsoft.Json.dll,手动复制到项目文件夹,再添加引用。而有了 NuGet,你只需在 Visual Studio 中打开“管理 NuGet 程序包”,搜索Newtonsoft.Json,点击“安装”,一切自动完成。 -
自动管理依赖
一个包可能依赖其他包。例如,安装A包时,如果它需要B包,NuGet 会自动把B也下载并配置好,无需你手动干预。 -
版本控制
你可以精确指定要安装的版本(如1.0.0或2.0.0)。当包有新版本时,NuGet 会提示你更新,且可以轻松回退。 -
统一仓库
全球的 .NET 开发者都将自己的包发布到 NuGet 官方仓库 nuget.org 上。目前该仓库已拥有超过 30 万个包,总下载量数十亿次。
如何使用 NuGet?
在 Visual Studio 中,最简单的方式是:
- 右键单击项目 → “管理 NuGet 程序包”
- 在“浏览”选项卡中搜索你需要的包
- 选择版本,点击“安装”
如果你习惯命令行,可以在“程序包管理器控制台”或终端中执行:
Install-Package Newtonsoft.Json
对于 .NET Core / .NET 5+ 项目,还可以使用 dotnet 命令:
dotnet add package Newtonsoft.Json
二、“NuGet” 这个名字的来历
“NuGet” 是一个生造的单词,但它背后有一段有趣的故事。
从 NuPack 到 NuGet
NuGet 最初的名字叫 NuPack(New Package 的缩写),意为“新包”。它在 2010 年由微软的团队开发,旨在为 .NET 提供一个官方的包管理工具。
然而,在发布前夕,团队发现 “NuPack” 这个名称与另一款商业产品重名。为了避免商标纠纷,他们不得不紧急改名。
在讨论新名字时,团队成员之一提出了 “NuGet” 的建议。这个名字保留了原名的 “Nu” 前缀,又用 “Get” 替代了 “Pack”。
名字的含义
-
Nu = New(新)
在英语中,“Nu” 是 “New” 的谐音或简写。这体现了包管理器的核心理念:获取“新”的代码组件,同时也象征着 .NET 生态的新生。 -
Get = 获取
直观地表达了工具的功能——从仓库中获取(Get)包。
因此,“NuGet” 的字面意思就是 “获取新组件”。
文化彩蛋:希腊字母 Νυ
也有一种非官方的说法认为,“Nu” 还暗指希腊字母 $\Nu$(Nu)。在科技领域使用希腊字母命名是一种常见做法(如 μTorrent、π 等),这为名字增添了一丝极客色彩。
三、NuGet 对 .NET 开发者的意义
对于 C# 学习者来说,NuGet 可以让你站在巨人的肩膀上。无论是做 Web 开发、桌面应用、移动应用,还是游戏开发,你几乎总能找到一个现成的 NuGet 包来快速实现所需功能。
类比其他语言:
- JavaScript 世界:npm
- Python 世界:pip
- Java 世界:Maven
- .NET 世界:NuGet
总结
- NuGet 是什么:.NET 的包管理器,帮你下载、安装、管理第三方代码库。
- 名字由来:从 “NuPack” 改名而来,“Nu” 代表 “New”,“Get” 代表获取,合起来就是“获取新组件”,简洁地表达了工具的核心功能。
下次当你需要在项目中引用一个第三方库时,记得去 NuGet 超市逛一逛,你会发现那里几乎有你想要的一切。

