使用 Visual Studio 快速创建 NuGet 程序包并发布到 NuGet 官网

前言

在前面的 .NET EF Core 快速入门实战教程章节中我们创建了一个名为 EFCoreGenericRepository 的 .NET 9 通用仓储类库,今天我们来把这个 EF Core 通用仓储类库打包成 NuGet 程序包并发布到 NuGet 官网(https://www.nuget.org),并在项目中引入我们发布的 NuGet 程序包。

本文将使用 Visual Studio 2022 将 .NET 类库制作为 NuGet 包,然后使用 .NET CLI 工具将其发布到 NuGet 官网(https://www.nuget.org)。

NuGet 简介

NuGet 包是具有 .nupkg 扩展的单个 ZIP 压缩文件,此扩展包含编译代码 (DLL)、与该代码相关的其他文件以及描述性清单(包含包版本号等关键信息)。使用代码的开发人员共享创建包,并将其发布到公用或专用主机。包使用者从适合的主机获取这些包,将它们添加到项目,然后在其项目代码中调用包的功能。在此过程中,NuGet 会自动处理所有底层依赖和安装细节。

在 NuGet.org 上注册个人帐户

必须注册个人帐户才能在 NuGet 官网(https://www.nuget.org) 上发布和管理包。

创建并获取 NuGet 包的 API 密钥

选择右上角的用户名,然后选择 API keys:

创建 NuGet 包的 API 密钥:

获取 NuGet 包的 API 密钥:

注意密钥复制一次后就不能再复制 API 密钥了,需要再复制 API 密钥的话则需要点击重新生成按钮。

配置包的属性

EFCoreGenericRepository 类库 => 属性 => 填写相关包的配置信息:

生成 NuGet 包

方式一、在构建时生成 NuGet 包

属性 => 常规 => 勾选在生产操作期间创建包文件 => 切换为Release => 重新生成:

方式二、使用 .NET CLI 生成 NuGet 包

在项目根目录(含 .csproj 的目录)执行,在 Release 配置下打包(推荐):

perl 复制代码
dotnet pack -c Release

使用 .NET CLI 发布 NuGet 包

接下来我们使用 .NET CLI 来发布生成好的 NuGet 包到 NuGet 官网(https://www.nuget.org)中。

在包含 .nupkg 文件的文件夹运行以下命令。指定 .nupkg 文件名,并将密钥值替换为 API 密钥。

bash 复制代码
dotnet nuget push EFCoreGenericRepository.1.2.0.nupkg --api-key 你的API密钥 --source https://api.nuget.org/v3/index.json

在 NuGet.org 上查看发布成功的 NuGet 包

在项目中引入发布成功的 NuGet 包

.NET CLI 命令安装

lua 复制代码
dotnet add package EFCoreGenericRepository --version 1.2.0

NuGet 包管理中安装和使用

NuGet 包安装

NuGet 包使用

ini 复制代码
var _repository = new Repository<SchoolDbContext>(new SchoolDbContext());
var teachers = _repository.GetAllAsync<TeacherInfo>().Result;

更多 Visual Studio 实用功能

相关推荐
code2cat6 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
掘金者阿豪6 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
前端·后端
鶴哥只手遮天7 小时前
AFSIM 2.9.0 深度解析·进阶卷第 1 章 插件源码精读:16 个 WSF 插件的架构与实现
后端
愚农搬码7 小时前
低代码表单与在线问卷不是一回事:产品定位和技术边界
后端
武子康7 小时前
固定时间步已经开了,为什么游戏回放还会走出不同位置?
人工智能·后端·agent
70后写java的老码农7 小时前
换模型只改三行配置:LangChain4j + Spring Boot 3.5 实战,一次分别接入 9 家模型服务
后端·ai编程
愚农搬码7 小时前
2026 年开源表单设计器选型:哪个更好用?
后端
vipxieliang7 小时前
ValidX 正则表达式预编译优化:Pattern 复用策略
java·spring boot·后端
vipxieliang8 小时前
OpenTelemetry 生产实践:Skyscanner 24 集群管理经验与 Mastodon 小团队方案
后端
明月_清风8 小时前
为什么 Skill 很难商业化?Bot 才是 AI 时代真正的商业机会
人工智能·后端·agent