1. 程式人生 > >Nuget多專案批量打包上傳伺服器的簡明教程

Nuget多專案批量打包上傳伺服器的簡明教程

本篇不會介紹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