本篇不會介紹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多項目批量打包上傳服務器的方法,希望對有需要的朋友有所幫助,當然,如果你有更好的方式也可以給我留言。感謝閱讀。