NuGet 入门指南:像搭积木一样构建 .NET 应用
优秀的程序员不是一直造轮子而是知道什么时候该用现成的轮子。对于刚接触 .NET 的同学来说经常会听到别人说这个功能装个 NuGet 包就行了。第一次听到的时候可能会一脸疑惑NuGet 到底是什么为什么几乎所有 .NET 项目都会用到它不用担心本文将带你从零开始认识 NuGet并学会安装、更新、管理第三方库最后还能亲手制作属于自己的 NuGet 包。读完本文你会发现NuGet 就像乐高积木库一样让开发 .NET 应用变得简单高效。什么是 NuGet如果你使用过手机一定安装过各种 App。例如微信QQ抖音Chrome 浏览器这些应用都是从应用商店下载安装的。而NuGet就是.NET 世界的应用商店。不过它安装的不是 App而是第三方库Library工具ToolSDK框架组件例如需求NuGet 包JSON 序列化Newtonsoft.JsonExcel 操作EPPlus数据库 ORMDapper日志Serilog单元测试xUnit所以你不用再自己重复写这些功能。 为什么需要 NuGet假设你需要把对象转换成 JSON。自己写可能要写几百行代码。而别人早就写好了而且已经经过无数项目验证。只需要安装Newtonsoft.Json然后var json JsonConvert.SerializeObject(user);搞定是不是很像去乐高积木库拿一块积木而不是自己烧塑料造一块。所以大家常说不要重复造轮子Dont Reinvent the Wheel。NuGet 就是帮我们找到这些轮子。NuGet 的工作原理 可以把整个流程想象成这样你的项目 │ │ 安装包 ▼ NuGet 客户端 │ ▼ NuGet 官方服务器 │ 下载 DLL、依赖 │ ▼ 项目可以直接引用简单来说项目 ↓ NuGet ↓ 下载DLL ↓ 引用成功以后编译时这些 DLL 会自动参与构建。第一次安装 NuGet 包 我们安装最经典的Newtonsoft.Json方法一Visual Studio 安装推荐️Visual Studio 已经内置了 NuGet。步骤非常简单第一步右键项目项目 └── 管理 NuGet 程序包...第二步点击浏览(Browse)搜索Newtonsoft.Json第三步点击Install等待几秒。完成。是不是和手机安装 App 一样方法二VS Code 安装 VS Code 本身没有 NuGet 图形界面。一般使用命令dotnet add package Newtonsoft.Json输出类似Adding PackageReference... Restore completed.安装完成。看懂 .csproj 文件 安装完成以后会发现项目多了一段ItemGroup PackageReference IncludeNewtonsoft.Json Version13.0.3 / /ItemGroup很多新人第一次看到PackageReference完全不知道什么意思。其实它就一句话告诉 .NET这个项目依赖 Newtonsoft.Json。其中IncludeNewtonsoft.Json表示安装哪个包。而Version13.0.3表示安装哪个版本。整个意思就是项目需要 Newtonsoft.Json 13.0.3。安装后的目录发生了什么很多新人会问DLL 去哪了实际上项目目录一般不会存 DLL。NuGet 会下载到WindowsC:\Users\用户名\.nuget\packages里面类似packages ├── newtonsoft.json │ ├──13.0.1 │ ├──13.0.2 │ └──13.0.3以后其它项目还能重复使用。不用再次下载。常见操作图解 安装包Visual Studio右键项目 ↓ Manage NuGet Packages ↓ Browse ↓ Install命令行dotnet add package Newtonsoft.Json更新包Visual StudioUpdates选择新版本Update命令dotnet add package Newtonsoft.Json --version 13.0.3卸载包Visual StudioInstalled ↓ Uninstall命令dotnet remove package Newtonsoft.Json是不是很简单什么是 dotnet restore很多人第一次克隆项目git clone然后直接dotnet run结果找不到程序集或者Package not found为什么因为项目只有配置没有 DLL。例如.csproj里面只是记录需要哪些包真正的 DLL 还没下载。这时候就需要dotnet restore它会读取 csproj ↓ 分析 PackageReference ↓ 下载所有 NuGet 包 ↓ 放入本地缓存然后项目才能正常编译。为什么有时候要手动执行 restore通常情况下Visual Studio 会自动执行。但是下面几种情况建议手动执行✅ 第一次克隆项目git clone✅ 删除了.nuget缓存✅ 修改了.csproj✅ CI/CD 自动构建例如dotnet restore dotnet build dotnet publish这是企业里最常见的构建流程。避坑指南 ⚠️坑一版本冲突例如A 包 ↓ 依赖 Newtonsoft.Json 12而B 包 ↓ 依赖 Newtonsoft.Json 13两个版本可能产生冲突。解决办法✅ 尽量统一版本。升级到兼容的最新稳定版本通常是更好的选择。坑二项目跑不起来最常见原因依赖没有还原。执行dotnet restore或者Visual StudioClean ↓ Restore ↓ Rebuild大部分问题都会解决。坑三网络无法下载 NuGet 包可能原因网络连接异常NuGet 源配置错误公司内网限制访问可以检查Tools → NuGet Package Manager → Package Sources确认 NuGet 官方源是否可用。实战安装 Newtonsoft.Json ✨创建一个控制台程序using Newtonsoft.Json; // 创建一个匿名对象 var user new { Name Tom, Age 20 }; // 转换为 JSON 字符串 string json JsonConvert.SerializeObject(user); // 输出结果 Console.WriteLine(json);输出{Name:Tom,Age:20}是不是比自己拼接字符串方便得多小练习制作自己的 NuGet 包 学会使用 NuGet 后不妨尝试创建自己的包。第一步创建一个类库dotnet new classlib -n MyMath第二步添加一个简单的方法namespace MyMath; /// summary /// 提供基础数学计算方法 /// /summary public class Calculator { /// summary /// 返回两个整数的和 /// /summary public int Add(int a, int b) { return a b; } }第三步在.csproj中补充包信息PropertyGroup PackageIdMyMath/PackageId Version1.0.0/Version AuthorsYourName/Authors Description一个简单的数学工具库/Description /PropertyGroup第四步执行打包dotnet pack成功后会在bin/Release目录下生成MyMath.1.0.0.nupkg这个.nupkg文件就是一个标准的 NuGet 包可以发布到 NuGet 服务器也可以提供给团队内部使用。总结 现在让我们回顾一下今天学到的内容✅ NuGet 是 .NET 的包管理器就像手机的应用商店或乐高积木库。✅ 通过 NuGet我们可以快速安装和管理第三方库避免重复造轮子。✅.csproj文件中的PackageReference用于声明项目依赖的 NuGet 包。✅dotnet restore会根据项目配置下载缺失的依赖是项目能够顺利编译的重要步骤。✅ 学会创建和打包自己的类库后你也能将自己的代码封装成 NuGet 包与团队共享甚至发布到全球开发者使用。 写在最后.NET 生态之所以强大并不仅仅因为它拥有优秀的运行时更因为有数以万计的高质量 NuGet 包。对于初学者来说不需要一开始就什么都自己写。站在巨人的肩膀上才能看得更远。当你熟练掌握 NuGet 后你会发现开发 .NET 应用就像搭乐高一样把一块块成熟可靠的积木组合起来就能快速构建出功能完善的软件。