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