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