手把手教你搭建使用NuGet私有源
文章目錄
- 前言
- Who|什么是NuGet
- Why|為什么用NuGet
- How|怎么使用NuGet
- 搭建Nuget私有源
- 打包Nuget包
- 發布到私有源
- 不開啟密鑰驗證
- 開啟密鑰驗證
- 測試
- 總結
前言
相信寫過.net的小伙伴應該都用過NuGet來安裝使用第三方或者官方的代碼(程序集),就算你沒用過,那相信你也見過。廢話不多說,直接進入主題,拋出靈魂三問(who,why,how),本文主要介紹怎么搭建私有源。
Who|什么是NuGet
截取部分官方解釋:
適用于任何現代開發平臺的基本工具可充當一種機制,通過這種機制,開發人員可以創建、共享和使用有用的代碼。 通常,此類代碼捆綁到“包”中,其中包含編譯的代碼(如 DLL)以及在使用這些包的項目中所需的其他內容。
對于 .NET(包括 .NET Core),共享代碼的 Microsoft 支持的機制則為 NuGet ,其定義如何創建、托管和使用面向 .NET 的包,并針對每個角色提供適用工具。
簡單理解它其實就是一個微軟開發的包管理工具,就好比如JAVA中的Maven,Node中的NPM,Python中的PIP等等,其實目前大部分主流的編程語言都有自己的包管理工具。
Why|為什么用NuGet
首先它是個管理工具,那它就具備有安裝、卸載、升級降級的功能。其次可以打包分享共享自己的代碼供別人使用。最后總結,說白了,就是為了復用代碼,避免重復造輪子。
那有小伙伴就會說了
”我可以直接把想復用的公共代碼,編譯好的程序集放在某個文件夾中,直接引用不也可以嗎?“
這樣子做也是沒問題,雖說簡單粗暴,但也存在兩個比較嚴重的弊端:
How|怎么使用NuGet
這里我主要會演示三大部分,分別是搭建Nuget私有源,打包Nuget包,將Nuget包發布自己的私有源。
環境準備
| Visual Studio2019 | 16.11.18 |
| dotnet CLI | 6.0.202 |
| IIS | 10 |
搭建Nuget私有源
1、新建一個解決方案
2、直接選空模板然后點創建
3、右擊項目找到=》管理Nuget程序包=》搜索安裝NuGet.Server
等待安裝完畢,這時候會多出來幾個文件,還有web.config多出一些配置,主要配置信息都在appSettings節點里面。
- requireApiKey:確定從服務器推送/刪除包是否需要Api密鑰。默認為true
- apiKey:密鑰
- packagesPath:更改到packages文件夾的路徑。默認值為~/Packages。這可以是虛擬或物理路徑。
還有其他配置,有需要可以自行再翻譯搜索一下用途
4、因為這邊我是用windowns環境在運行,所以項目部署IIS跑起來試試看
打包Nuget包
1、簡單創建一個.NET Standard的類庫項目
2、右擊項目=》屬性,找到打包這欄,可以看到里面有很多包的元素
關于包的最佳做法,建議大家可以參照官方的指南,或者找個比較知名的nuget包,看看人家怎么寫的。
3、然后就可以右擊項目打包或者使用dotnet pack命令打包
發布到私有源
這里我使用的是dotnet 命令來發布nuget包,當然還有其他方式,比如使用nuget CLI命令。
關于dotnet涉及nuget的命令,使用dotnet nuget --help查看相關語句用法
在展開看看發布的用法dotnet nuget push --help
Options:
-h|–help Show help information
–force-english-output 使用不變的基于英語的區域性強制應用程序運行。
-s|–source 要使用的包源(URL、UNC/文件夾路徑或包源名稱)。如果在 NuGet.Config 中指定,則默認為 DefaultPushSource。
-ss|–symbol-source 要使用的符號服務器 URL。
-t|–timeout 推送到服務器的超時值(以秒為單位)。默認為 300 秒(5 分鐘)。
-k|–api-key 服務器的 API 密鑰。
-sk|–symbol-api-key 符號服務器的 API 密鑰。
-d|–disable-buffering 推送到 HTTP(S) 服務器時禁用緩存可減少內存使用。
-n|–no-symbols 如果存在符號包,系統不會將該符號包推送到符號服務器。
–no-service-endpoint 請勿將 “api/v2/package” 追加到源 URL。
–interactive 對于身份驗證等操作,允許命令阻止并要求手動操作。
–skip-duplicate 如果包和版本已存在,則跳過它并繼續推送中的下一個包(若有)。
不開啟密鑰驗證
1、首先要將我們的nuget服務器站點的web.config的requireApiKey節點更改成false,這步很關鍵,如果沒有修改成false,且你又不帶密鑰發布,那會提示
error: Response status code does not indicate success: 403 (Forbidden).
2、打開cmd或者power shell 輸入dotnet命令
這里我使用powershell
開啟密鑰驗證
1、重新修改nuget服務器站點的web.config配置,將以下節點調整,然后保存
<add key="requireApiKey" value="true" /> <add key="apiKey" value="pwd@123456" />2、打開cmd或者powershell 輸入dotnet命令
這里我使用powershell
最后看看是不是nuget包是否成功上傳到nuget服務器站點。
以我這邊演示的例子來說,我nuget服務器部署的目錄在D:\個人項目\publish\MyNugetServer ,然后找到打開里面的Packages文件夾。
測試
1、打開VS=》工具=》選項=》NuGet包管理器=》程序包源,新增一個自己的包源,然后確認保存。
2、隨意打開一個項目,切換到自己的程序包源,然后看看是否存在剛剛上傳的包
總結
簡單使用操作就到此一游,更多高級玩法直接上官方文檔看教程,還是那句話,官網永遠是最好的老師。
886
總結
以上是生活随笔為你收集整理的手把手教你搭建使用NuGet私有源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx 配置之 proxy_pass
- 下一篇: 16套爬虫实战源码