要发布 NuGet 包,只需要执行命令 nuget push xxx.nupkg
即可,或者去 nuget.org 点鼠标上传。
不过,如果你有很多的 NuGet 包并且经常需要推送的话,也可以集成到 Directory Opus 或者 Total Commander 中。
NuGet 推送命令
NuGet 推送命令可直接在微软官方文档中阅读到:
- NuGet CLI push command - Microsoft Docs
在你已经设置了 ApiKey 的情况下:
1 | nuget setapikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -source https://api.nuget.org/v3/index.json |
---|
之后你只需要执行一句命令即可:
1 | nuget.exe push Walterlv.Themes.FluentDesign.Source.0.8.0-alpha.nupkg -source https://api.nuget.org/v3/index.json |
---|
或者推送此文件夹下 0.8.0-alpha 版本的所有 NuGet 包:
1 | nuget.exe push *.0.8.0-alpha.nupkg -source https://api.nuget.org/v3/index.json |
---|
用 PowerShell 包装一下
要执行 NuGet 的推送命令,我们需要一个可以执行命令的终端,比如 PowerShell。命令的执行结果我们也可以直接在终端看到。
不过,如果命令是集成到其他工具里面,那么就不一定能够看得到命令的执行结果了。
这个时候,可以考虑用 PowerShell 间接执行这个命令:
1 2 | PowerShell 版本 powershell -NoExit -c "nuget push *.0.8.0-alpha.nupkg -Source https://api.nuget.org/v3/index.json" |
---|
1 2 | PowerShell Core 版本 pwsh -NoExit -c "nuget push *.0.8.0-alpha.nupkg -Source https://api.nuget.org/v3/index.json" |
---|
关于使用 PowerShell 间接执行命令的更多细节,可以参考我的另一篇博客:
- PowerShell 的命令行启动参数(可用于执行命令、传参或进行环境配置) - walterlv
集成到 Directory Opus
我将这个命令集成到了 Directory Opus 中,这样,一次点击或者一个快捷键就能发布某个特定版本的所有的 NuGet 包了。
关于使用 Directory Opus 继承工具栏按钮的细节,可以阅读我的另一篇博客:
- 在 Directory Opus 中添加自定义的工具栏按钮提升效率 - walterlv
具体来说,就是安装上文中所述的方法添加一个按钮,在按钮当中需要执行的脚本如下:
1 2 | cd "{sourcepath} " pwsh -NoExit -c "$file=Regex::Match('{file}', '.d .d .d . .nupkg').Value; nuget push *$file -Source https://api.nuget.org/v3/index.json" |
---|
含义为:
- 转到 Directory Opus 当前目录
- 执行一段 PowerShell 脚本,但执行完之后不退出(这样,我可以观察到我实际上推送的是哪一些包,并且可以知道推送是否出现了错误)
- 要执行的命令为
nuget push *.xxx.nupkg -Source https://api.nuget.org/v3/index.json
- 其中,中间的 xxx 是使用正则表达式匹配的
{file}
文件名 {file}
是 Directory Opus 当前选中的文件,我用正则表达式匹配出其版本号和后面的.nupkg
后缀- 将正则表达式匹配出来的文本作为
nuget push
的包,最终生成的命令会非常类似于本文一开始提到的命令nuget push *.0.8.0-alpha.nupkg -Source https://api.nuget.org/v3/index.json
- 其中,中间的 xxx 是使用正则表达式匹配的
于是,当我选中了一个包,按下这个工具栏按钮之后,就可以推送与这个包相同版本的所有的 NuGet 包了。
毕竟我一次编译产生的 NuGet 包太多了,还是需要使用这样的方式来提高一点效率。至于为什么不用持续集成,是因为目前 SourceYard 还不支持在 GitHub 上集成。
参考资料
- NuGet CLI push command - Microsoft Docs
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/push-nuget-packages-using-powershell.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。