Nuget多项目批量打包上传服务器的简明教程
本篇不会介绍Nuget是什么,如何打包上传Nuget包,怎么搭建私有Nuget服务器。这些问题园子里都有相应的文章分享,这里不做过多阐述。另外本文假设你已经下载了Nuget.exe,并且已经设置好了环境变量。什么?你还不会?那你先去百度下设置好后再来看这篇文章吧。nuget下载
实际项目中,我们可能一个解决方案下面会有N多个项目,每次发布这N多个项目都会使用统一的版本号一起发布到Nuget服务器。搜索了很久没找到一个好的方式,好在参考了abp vnext的打包方法实现了这个需求。因此分享下,希望对有需要的人有所帮助。
作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/12591174.html
首先看下图,每个脚本的作用我进行了注释,稍后我们再做进一步的详细阐述。在具体批量发布的时候,只需要先执行下pack.ps1
脚本,然后再执行下push_packages.ps1
脚本即可。当然还有一些参数需要根据你的项目来进行修改的。不过你不用担心,只需要按照下面步骤进行即可。
第一步,在common.ps1
中配置我们的解决方案以及项目路径
我们把$solutions
这个变量中的内容替换成我们的解决方案的相对路径。比如:解决方案在E:\abp\abp\framework
这个路径,我们的脚本文件在E:\abp\abp\nupkg
这个路径,那么我们就可以配置framework
这个值就可以了。
第二步,pack.ps1
这个脚本基本不需要修改,这里只是进行下代码的解释
- 这里首先引入第一步的
common.ps1
脚本文件(因为需要用到上面定义的变量) - 循环遍历
$solutions
变量,找到所有的解决方案,并执行dotnet restore
- 这里才是打包的核心代码,遍历
$projects
并执行打包过程,然后把生成的nupkg
文件拷贝到脚本所在的目录。
第三步,push_packages.ps1
脚本文件打包上传到服务器
-
这里首先引入第一步的
common.ps1
脚本文件(因为需要用到上面定义的变量) -
从根目录下获取
common.props
文件中获取对应的版本号,并推送对应版本号的nupkg
到服务器注意:
common.props
文件需要你自行添加,这里面可以定义csproject文件所需要的一些变量 -
循环
common.ps1
脚本中的$projects
,并执行推送过程。 -
最后修改 下你自己的
--api-key
(Nuget管理的密钥)以及-s
(包源,如果你是自己搭建的私有nuget服务器,则这里需要替换成私有nuget服务器地址)
第四步,执行上传操作
-
进入到你的上面三个脚本的目录,
Shift
+鼠标右键,选择在此处打开powershell
打开powershell命令窗口 -
依次执行下
.\pack.ps1
,push_packages.ps1
脚本即可。 -
这里你在执行
powershell脚本
的时候可能会报如下的错误这是由于操作系统默认禁止执行脚本,需要以管理员身份执行一次
set-executionpolicy remotesigned
然后输入y
回车即可顺利执行。Set-ExecutionPolicy
可更改 Windows PowerShell 执行策略的用户首选项。要在 Windows Vista、Windows Server 2008 和 Windows
的更高版本上运行此命令,必须使用"以管理员身份运行"选项启动 Windows PowerShell,
总结
本文参照abp vnext批量打包解决方案下面所有项目文件并上传到nuget服务器的方法实现了一个简单的Nuget多项目批量打包上传服务器的方法,希望对有需要的朋友有所帮助,当然,如果你有更好的方式也可以给我留言。感谢阅读。
下载地址
作者:依乐祝(祝雷)
出处:https://www.cnblogs.com/yilezhu
联系:1015657114@qq.com 微信:jkingzhu

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构