VS外部工具一键打包推送Nuget包
使用vs的外部工具集成在项目右键菜单一键打包推送nuget包到私有nuget服务器,跳过繁琐的命令过程。
使用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] --skip-duplicate
# 2020-08-10新增--skip-duplicate,push时添加--skip-duplicate可以忽略已经发布的版本包
--skip-duplicate
2、添加外部工具
打开VS,选择[工具] > [外部工具] > [添加]
- 标题自定义
- 命令选择前面创建的批处理文件;
- 参数选择【目标名(TargetName)】
- 初始目录:选项项目目录(ProjectDir)
- 使用输出窗口:勾选(查看脚本执行过程)
3、添加项目右键自定义菜单
选择 [工具] > [自定义] > [命令] > [上下文菜单]
选择 [项目和解决方案上下文菜单 | 项目]
点击 [添加命令] > 选择 [工具] > 选择 [外部命令2]
选择 [外部命令2] > 点击 [修改所选内容]
修改为 【发布Nuget包】
4、使用
在nuget SDK项目上右键,选择 [发布Nuget包]
在输出中查看结果【已推送包】
本地nuget包存放目录,自动创建项目对应的文件夹,在使用dotnet pack 打包项目后,在项目的根目录下会生成对应版本的.nupkg 包,并且包名都是 项目名.x.x.x.nupkg,由于VS在使用外部工具命令时无法传项目的版本号,所以在批处理脚本中无法准确获取打包后的文件名,所以需要在使用 单独的文件夹存放,并且在推送的时候直接推送该文件夹的所有包即可(Nuget服务器上已存在的版本包并不会被覆盖,会继续保持原有版本的Nuget包)