使用vs的外部工具集成在项目右键菜单一键打包推送nuget包到私有nuget服务器,跳过繁琐的命令过程。

1、创建批处理脚本

创建名称为nuget-publish.bat批处理文件


::接收目标项目名称
SET targetName=%~1
::本地自定义存放nuget包的目录,需要修改为对于的目录
SET nugetPath=D:\Nuget\
::判断项目文件夹是否存在,不存在则创建
if not exist %nugetPath%%targetName% (md %nugetPath%%targetName%)
::打包项目并输出到指定目录(主要是为了解决版本号的问题,采用单独的文件夹存放包)
dotnet pack %targetName%.csproj -o %nugetPath%%targetName%
::发布项目文件夹下面的所有.nupkg包至服务器(由于没有办法获取到项目的版本号,
::所以无法准确的知道打包后的文件名是什么,所以直接推送整个文件夹下的包)
dotnet nuget push -s [nuget server] %nugetPath%%targetName%\*.nupkg -k [key]

2、添加外部工具

打开VS,选择[工具] > [外部工具] > [添加]

1-2

  • 标题自定义
  • 命令选择前面创建的批处理文件;
  • 参数选择【目标名(TargetName)】

2

  • 初始目录:选项项目目录(ProjectDir)
  • 使用输出窗口:勾选(查看脚本执行过程)

3-1

3、添加项目右键自定义菜单

选择 [工具] > [自定义] > [命令] > [上下文菜单]

14-1

选择 [项目和解决方案上下文菜单 | 项目]

4
5-1

点击 [添加命令] > 选择 [工具] > 选择 [外部命令2]

6-1

7-1

选择 [外部命令2] > 点击 [修改所选内容]

8-1

修改为 【发布Nuget包】

9-1
10-1

4、使用

在nuget SDK项目上右键,选择 [发布Nuget包]

11-2

在输出中查看结果【已推送包】

12-2

13-2

本地nuget包存放目录,自动创建项目对应的文件夹,在使用dotnet pack 打包项目后,在项目的根目录下会生成对应版本的.nupkg 包,并且包名都是 项目名.x.x.x.nupkg,由于VS在使用外部工具命令时无法传项目的版本号,所以在批处理脚本中无法准确获取打包后的文件名,所以需要在使用 单独的文件夹存放,并且在推送的时候直接推送该文件夹的所有包即可(Nuget服务器上已存在的版本包并不会被覆盖,会继续保持原有版本的Nuget包)

参考内容
使用 nuget.exe CLI 创建包
管理外部工具