CNuGet

C# NuGet

C# NuGet

介绍

NuGet 是一个用于 .NET 平台的包管理器,用于轻松地添加、移除和管理项目中的依赖项。开发人员可以通过 NuGet 将第三方库、工具和资源添加到他们的项目中,以加速开发过程并提高生产力。

本文将详细介绍 NuGet 的基本概念、使用方法以及一些常用的 NuGet 命令和功能。

NuGet 的基本概念

在深入了解 NuGet 的使用方法之前,先了解一些基本概念是非常重要的。

1. 包(Package)

NuGet 中的包是以文件的形式分发的软件组件或资源的集合。包可以包含编译后的二进制文件、配置文件、文档和其他资源文件。

在 NuGet 仓库中,有一个巨大的包集合,开发人员可以从中获取所需的包。同时也可以将自己的代码打包成包,并上传到 NuGet 服务器,以供他人使用。

2. 仓库(Repository)

NuGet 仓库是包的集合地。NuGet 提供了一个官方仓库(https://www.nuget.org/),同时也可以搭建自己的私有仓库。

在使用 NuGet 安装包的时候,默认情况下会从官方仓库中下载,也可以通过配置指定其他的仓库地址。

3. 依赖(Dependency)

包可以依赖于其他包。当一个包依赖于其他包时,安装该包时,NuGet 会自动管理这些依赖关系,并确保安装了所有相关的包。

例如,如果项目 A 依赖于项目 B,那么在安装项目 A 时,NuGet 会自动安装项目 B。

NuGet 的安装和配置

如果你使用的是 Visual Studio 2017 或更高版本,NuGet 已经默认安装并集成在其中了,你不需要进行额外的安装操作。

如果你使用的是较低版本的 Visual Studio,可以通过以下步骤安装 NuGet:

  1. 打开 Visual Studio 并选择菜单栏中的 “工具” -> “扩展和更新”。
  2. 在弹出的窗口中,选择 “联机” 选项。
  3. 在搜索框中输入 “NuGet”,找到 “NuGet 包管理器” 并点击 “下载”。
  4. 下载完成后,点击 “重启以完成安装”。

安装完成后,NuGet 包管理器窗口将会出现在 Visual Studio 的 “工具” 菜单中。

配置 NuGet 源

默认情况下,Visual Studio 使用官方 NuGet 源来安装和更新包。然而在一些情况下,你可能需要使用其他的 NuGet 源。

你可以在 Visual Studio 中配置 NuGet 源的步骤如下:

  1. 打开 Visual Studio 并选择菜单栏中的 “工具” -> “选项”。
  2. 在弹出的窗口中,展开 “NuGet 包管理器” 选项,并选择 “程序包源”。
  3. 点击右侧的 “+” 按钮,添加一个新的源。
  4. 在 “源名称” 输入框中输入源的名称,例如 “My Private Source”。
  5. 在 “源” 输入框中输入源的 URL。
  6. 点击 “确定” 保存配置。

经过以上步骤,你可以在 NuGet 包管理器中选择新添加的源。

使用 NuGet

NuGet 提供了多种方式来使用和管理包,本节将介绍其中常用的几种方式。

1. 使用 NuGet 窗口

在 Visual Studio 中,使用 NuGet 最简单的方式就是通过 “NuGet 包管理器” 窗口。

要打开 “NuGet 包管理器” 窗口,打开 Visual Studio,并选择菜单栏中的 “工具” -> “NuGet 包管理器” -> “程序包管理器控制台”。

在打开的窗口中,你可以通过搜索框搜索所需的包,然后点击 “安装” 按钮来安装包。你也可以手动输入 Install-Package PackageName 命令来安装包。

例如,要安装常用的 Json 库 Newtonsoft.Json,你可以在控制台中输入以下命令:

Install-Package Newtonsoft.Json

2. 使用 Package Manager Console

Package Manager Console 是 Visual Studio 提供的一个命令行工具,可以快速执行 NuGet 命令。

要打开 Package Manager Console,打开 Visual Studio 并选择菜单栏中的 “工具” -> “NuGet 包管理器” -> “程序包管理器控制台”。

在 Package Manager Console 中,你可以输入各种 NuGet 命令来安装、更新、删除和管理包。

例如,要安装 Newtonsoft.Json,你可以使用以下命令:

Install-Package Newtonsoft.Json

3. 使用 .NET CLI

.NET CLI 是 .NET 跨平台开发工具的一部分,可以用于跨平台的 NuGet 包管理。

要使用 .NET CLI 安装 NuGet 包,需要打开命令行终端,切换到项目的根目录,然后执行以下命令:

dotnet add package PackageName

例如,要安装 Newtonsoft.Json,你可以使用以下命令:

dotnet add package Newtonsoft.Json

NuGet 命令和功能

NuGet 提供了丰富的命令和功能,以便开发人员更好地管理包和项目。

常用的 NuGet 命令

  • Install-Package:安装包。
  • Uninstall-Package:卸载已安装的包。
  • Update-Package:更新包的版本。
  • Get-Package:获取项目中已安装的包。
  • Add-Migration:向 Entity Framework Core 项目中添加新的迁移记录。

创建和发布 NuGet 包

要创建和发布自己的 NuGet 包,可以使用以下步骤:

  1. 创建一个类库项目,并将你的代码添加到其中。
  2. 在项目中添加一个 .nuspec 文件,该文件包含有关包的元数据,例如包的名称、版本、作者等信息。
  3. 使用 NuGet 命令行工具或 Visual Studio 的 “NuGet 包管理器” 窗口,将项目打包成 .nupkg 文件。
  4. 注册一个 NuGet 账户,并将 .nupkg 文件上传到 NuGet 服务器。
  5. 在发布时,确保你的包符合 NuGet 的规范,并提供有关使用该包的文档。

工具包引用和目标框架(PackageReference and Target Frameworks)

在 .NET Core 和 .NET Standard 中,推荐使用 PackageReference 来引用 NuGet 包在传统的 .NET Framework 项目中,使用的是 packages.config 文件来管理包的引用。而在 .NET Core 和 .NET Standard 项目中,使用 PackageReference 来管理包的引用。

使用 PackageReference 有以下几个优点:

  1. XML 文件更简洁:相比于 packages.config,PackageReference 的 XML 文件更加简洁和易读。它只需要一个 <PackageReference> 元素来引用一个包,而不需要一长串的 <package> 元素。

  2. 适用于多目标框架:PackageReference 可以在一个项目中针对多个目标框架引用不同的包。例如,一个项目可以同时针对 .NET Standard 和 .NET Framework 进行编译,使用不同的包引用。

  3. 支持自动恢复:PackageReference 支持自动恢复,即当项目迁移到其他计算机时,可以自动从 NuGet 源下载并还原所有的包。

要在项目中使用 PackageReference,可以按照以下步骤进行设置:

  1. 打开项目文件(例如 .csproj 文件)。
  2. 删除 <ItemGroup> 中的所有 <PackageReference><Reference> 元素。
  3. <ItemGroup> 中添加一个 <PackageReference> 元素来引用需要的包。例如:
    <ItemGroup>
     <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
    </ItemGroup>
    
  4. 保存文件并重新加载项目。

NuGet Package Manager Console 命令

除了前面提到的常用 NuGet 命令以外,NuGet Package Manager Console 还提供了一些特定的命令和功能,用于项目的构建和管理。

以下是一些常用的 NuGet Package Manager Console 命令:

  • Add-Migration:向 Entity Framework Core 项目中添加新的迁移记录。例如:
    Add-Migration InitialCreate
    
  • Update-Database:将 Entity Framework Core 数据库迁移到最新的迁移记录。例如:
    Update-Database
    
  • Enable-Migrations:为传统的 Entity Framework 项目启用迁移支持。例如:
    Enable-Migrations
    
  • Install-PackageProvider:安装 NuGet 包提供程序。例如:
    Install-PackageProvider -Name NuGet -Force
    
  • Install-Script:在 Package Manager Console 中安装一个 PowerShell 脚本。例如:
    Install-Script -Name PackagePublisher -Force
    

NuGet 版本控制

在使用 NuGet 时,可以通过指定版本来控制包的更新和使用。

NuGet 使用 Semantic Versioning(语义化版本控制)来标识和管理包的版本。版本号由三个数字组成:主版本号、次版本号和修订号。

  • 主版本号:当你做了不兼容的 API 修改时,应增加主版本号。
  • 次版本号:当你添加了向后兼容的功能时,应增加次版本号。
  • 修订号:当你进行向后兼容的错误修复时,应增加修订号。

在安装和更新包时,可以通过指定版本号来控制使用的包。例如,要安装特定版本的 Newtonsoft.Json,可以使用以下命令:

Install-Package Newtonsoft.Json -Version 12.0.3

如果不指定版本号,则 NuGet 默认会安装最新的版本。

总结

NuGet 是一个强大而方便的包管理器,可以帮助开发人员轻松地添加、移除和管理项目中的依赖项。通过使用 NuGet,开发人员可以更快地开发应用程序,并且可以快速集成和使用各种第三方库和工具。

本文详细介绍了 NuGet 的基本概念、安装和配置方法,以及常见的使用方式和命令。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C# 问答