Nuget多專案批量打包上傳伺服器的簡明教程
阿新 • • 發佈:2020-03-31
本篇不會介紹Nuget是什麼,如何打包上傳Nuget包,怎麼搭建私有Nuget伺服器。這些問題園子裡都有相應的文章分享,這裡不做過多闡述。另外本文假設你已經下載了Nuget.exe,並且已經設定好了環境變數。什麼?你還不會?那你先去百度下設定好後再來看這篇文章吧。[nuget下載](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe)
實際專案中,我們可能一個解決方案下面會有N多個專案,每次釋出這N多個專案都會使用統一的版本號一起釋出到Nuget伺服器。搜尋了很久沒找到一個好的方式,好在參考了abp vnext的打包方法實現了這個需求。因此分享下,希望對有需要的人有所幫助。
> 作者:依樂祝
> 原文地址:https://www.cnblogs.com/yilezhu/p/12591174.html
>
首先看下圖,每個指令碼的作用我進行了註釋,稍後我們再做進一步的詳細闡述。在具體批量釋出的時候,只需要先執行下`pack.ps1`指令碼,然後再執行下`push_packages.ps1`指令碼即可。當然還有一些引數需要根據你的專案來進行修改的。不過你不用擔心,只需要按照下面步驟進行即可。
![image-20200329100147560](https://img2020.cnblogs.com/blog/1377250/202003/1377250-20200329104806286-1749772881.png)
### 第一步,在`common.ps1`中配置我們的解決方案以及專案路徑
我們把`$solutions`這個變數中的內容替換成我們的解決方案的相對路徑。比如:解決方案在`E:\abp\abp\framework`這個路徑,我們的指令碼檔案在`E:\abp\abp\nupkg`這個路徑,那麼我們就可以配置`framework`這個值就可以了。
![image-20200329101445573](https://img2020.cnblogs.com/blog/1377250/202003/1377250-20200329104805907-696550424.png)
### 第二步,`pack.ps1`這個指令碼基本不需要修改,這裡只是進行下程式碼的解釋
1. 這裡首先引入第一步的`common.ps1`指令碼檔案(因為需要用到上面定義的變數)
2. 迴圈遍歷`$solutions`變數,找到所有的解決方案,並執行`dotnet restore`
3. 這裡才是打包的核心程式碼,遍歷`$projects`並執行打包過程,然後把生成的`nupkg`檔案拷貝到指令碼所在的目錄。
![image-20200329102000346](https://img2020.cnblogs.com/blog/1377250/202003/1377250-20200329104805621-273761400.png)
### 第三步,`push_packages.ps1`指令碼檔案打包上傳到伺服器
1. 這裡首先引入第一步的`common.ps1`指令碼檔案(因為需要用到上面定義的變數)
2. 從根目錄下獲取`common.props`檔案中獲取對應的版本號,並推送對應版本號的`nupkg`到伺服器
> 注意:`common.props`檔案需要你自行新增,這裡面可以定義csproject檔案所需要的一些變數
3. 迴圈`common.ps1`指令碼中的`$projects`,並執行推送過程。
4. 最後修改 下你自己的`--api-key`(Nuget管理的金鑰)以及`-s`(包源,如果你是自己搭建的私有nuget伺服器,則這裡需要替換成私有nuget伺服器地址)
![image-20200329102832869](https://img2020.cnblogs.com/blog/1377250/202003/1377250-20200329104805346-171977143.png)
### 第四步,執行上傳操作
1. 進入到你的上面三個指令碼的目錄,`Shift`+滑鼠右鍵,選擇在此處開啟`powershell`開啟powershell命令視窗
2. 依次執行下`.\pack.ps1`,`push_packages.ps1`指令碼即可。
3. 這裡你在執行`powershell指令碼`的時候可能會報如下的**錯誤**
![image-20200329103723580](https://img2020.cnblogs.com/blog/1377250/202003/1377250-20200329104804931-1113479413.png)
這是由於作業系統預設禁止執行指令碼,需要以管理員身份執行一次`set-executionpolicy remotesigned`然後輸入`y`回車即可順利執行。
> `Set-ExecutionPolicy` 可更改 Windows PowerShell 執行策略的使用者首選項。要在 Windows Vista、Windows Server 2008 和 Windows
> 的更高版本上執行此命令,必須使用\"以管理員身份執行\"選項啟動 Windows PowerShell,
## 總結
本文參照abp vnext批量打包解決方案下面所有專案檔案並上傳到nuget伺服器的方法實現了一個簡單的Nuget多專案批量打包上傳伺服器的方法,希望對有需要的朋友有所幫助,當然,如果你有更好的方式也可以給我留言。感謝閱讀。
## 下載地址
點這裡下載:https://files.cnblogs.com/files/yilezhu/n