NuGet 入门指南:像搭积木一样构建 .NET 应用

"优秀的程序员不是一直造轮子,而是知道什么时候该用现成的轮子。"

对于刚接触 .NET 的同学来说,经常会听到别人说:

"这个功能装个 NuGet 包就行了。"

第一次听到的时候,可能会一脸疑惑:

NuGet 到底是什么?为什么几乎所有 .NET 项目都会用到它?

不用担心,本文将带你从零开始认识 NuGet,并学会安装、更新、管理第三方库,最后还能亲手制作属于自己的 NuGet 包。

读完本文,你会发现:NuGet 就像乐高积木库一样,让开发 .NET 应用变得简单高效。 🚀


什么是 NuGet?📦

如果你使用过手机,一定安装过各种 App。

例如:

  • 微信

  • QQ

  • 抖音

  • Chrome 浏览器

这些应用都是从应用商店下载安装的。

NuGet ,就是 .NET 世界的应用商店

不过,它安装的不是 App,而是:

  • 第三方库(Library)

  • 工具(Tool)

  • SDK

  • 框架组件

例如:

需求 NuGet 包
JSON 序列化 Newtonsoft.Json
Excel 操作 EPPlus
数据库 ORM Dapper
日志 Serilog
单元测试 xUnit

所以,你不用再自己重复写这些功能。


🎯 为什么需要 NuGet?

假设你需要把对象转换成 JSON。

自己写?

可能要写几百行代码。

而别人早就写好了,而且已经经过无数项目验证。

只需要安装:

复制代码
Newtonsoft.Json

然后:

复制代码
var json = JsonConvert.SerializeObject(user);

搞定!

是不是很像:

去乐高积木库拿一块积木,而不是自己烧塑料造一块。 🧱

所以大家常说:

不要重复造轮子(Don't 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 Include="Newtonsoft.Json"
                      Version="13.0.3" />
</ItemGroup>

很多新人第一次看到:

复制代码
PackageReference

完全不知道什么意思。

其实它就一句话:

告诉 .NET:这个项目依赖 Newtonsoft.Json。

其中:

复制代码
Include="Newtonsoft.Json"

表示:

安装哪个包。

而:

复制代码
Version="13.0.3"

表示:

安装哪个版本。

整个意思就是:

项目需要 Newtonsoft.Json 13.0.3。


安装后的目录发生了什么?📂

很多新人会问:

DLL 去哪了?

实际上:

复制代码
项目目录

一般不会存 DLL。

NuGet 会下载到:

Windows:

复制代码
C:\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 Studio:

复制代码
Updates

选择新版本:

复制代码
Update

命令:

复制代码
dotnet add package Newtonsoft.Json --version 13.0.3

卸载包

Visual Studio:

复制代码
Installed
↓
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 Studio:

复制代码
Clean
↓
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>
    <PackageId>MyMath</PackageId>
    <Version>1.0.0</Version>
    <Authors>YourName</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 应用,就像搭乐高一样,把一块块成熟可靠的积木组合起来,就能快速构建出功能完善的软件。🧱🚀

相关推荐
逻极11 小时前
C# 从入门到精通:现代云原生与AI应用开发实战
ai·云原生·c#·.net
geovindu1 天前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
海盗12341 天前
微软技术周报2026-07-27
microsoft·c#·.net
iReachers2 天前
.NET项目集成混淆加密:自动化保护DLL和EXE
.net·代码保护·自动构建·msbuild·c#混淆
完美火龙篇 四月的友2 天前
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
.net·.netcore
柠檬香的2 天前
CsGrafeq: 比 Desmos 更“能折腾”的几何函数画板(.NET + Avalonia)
.net
geovindu3 天前
CSharp: Iterative Algorithms
开发语言·后端·算法·c#·.net·迭代算法
geovindu5 天前
CSharp: Flyweight Pattern
开发语言·后端·c#·.net·享元模式·结构型模式
驰骋工作流5 天前
请假流程:六款.NET工作流引擎实现方式对比
.net·ccflow·工作流引擎二开·.net工作流引擎对比