在我寫[在.NET Framework中使用RocketMQ(阿裡雲版)]這篇博客的時候,因為封裝了很多代碼在單獨的DLL中,包括生產者、消費者以及官方SDK等等,然後都在博客中體現出來導致博客大量代碼,然後有位讀者就建議打包成NuGet包,大家也可以直接安裝調用,我也覺得很不錯,於是就有了這篇文章... ...
作者:西瓜程式猿
主頁傳送門:https://www.cnblogs.com/kimiliucn
前言
在我寫[在.NET Framework中使用RocketMQ(阿裡雲版)]這篇博客的時候,因為封裝了很多代碼在單獨的DLL中,包括生產者、消費者以及官方SDK等等,然後都在博客中體現出來導致博客大量代碼,然後有位讀者就建議打包成NuGet包,大家也可以直接安裝引入調用,我也覺得很不錯,於是就有了這篇文章啦!
那NuGet是什麼呢?NuGet是.NET的包管理器,NuGet客戶端工具提供了生成和使用包的能力,NuGet庫是所有包作者和消費者使用的中心包存儲庫。那來看一下如何將代碼打包上傳到NuGet伺服器吧!
一、提前準備
1.1-登錄NuGet官網
(1)打開官方網址,然後點擊【Sign in with Microsoft】使用微軟賬號登錄。
(2)輸入微軟郵箱,然後點擊【下一步】進行登錄。
1.2-創建API Key秘鑰
(1)點擊右上角用戶名稱,然後點擊【API Keys】。
(2)然後點擊【Create】,在輸入必填的信息。【KeyName】可以填項目包名,也可以自定義命名,唯一就行了。然後【Glob Pattern】可以填寫"*"來替換任何序列。
API密鑰是一種令牌,可以向NuGet Gallery識別身份。NuGet命令行實用程式允許使用API密鑰向庫提交NuGet包以進行身份驗證。
註意要對API密鑰保密!如果某個密鑰意外泄露,可以隨時生成一個新密鑰。如有必要,還可以刪除現有的API密鑰。
註意:要將包推送到nuget.org,必須使用nuget.exe v4.1.0或更高版本,它實現了所需的nuget協議。
(3)然後點擊【Copy】複製秘鑰,請自行將秘鑰保存好,後面會用到。
二、創建與打包項目
(1) [西瓜程式猿]創建一個名為【Kimi.RocketMQ.NET】類庫,目標框架使用【.NET Framework 4.8】,輸出類型為【類庫】。
(2)代碼編寫後,然後使用Release模式生成dll。(我這沒有依賴其他任何外部包,如果依賴了,上傳打包前需要進行配置)
(3) 打開【AssemblyInfo.cs】文件,設置相關屬性值和版本。
(4)為了方便管理文件,我們可以單獨新建一個文件夾保存要上傳的文件。[西瓜程式猿]這裡新建名為【Kimi.RocketMQ.NET】的文件夾。
將編譯好的DLL,放在此文件夾。
然後新建一個【readme.md】用來介紹文件,會在包管理中顯示此文件的內容
在設計一個ICON(圖標需要上傳到線上,然後將外網能訪問的圖片地址進行上傳到NuGet),作為nuget包的圖標。大小建議是128px或256px(註意:文件格式必須是.png)。
文件夾截圖:
三、上傳NuGet
[西瓜程式猿]準備了要上傳NuGet上傳使用的資源包,如果大家要下載最新版請去官網下載。可以訪問下載(如果失效了,請聯繫我)。
下載地址(編碼:0m7AToKX):https://yongteng.lanzoub.com/ip4nN17bdtbi
密碼: 5jh4
文件截圖:
3.1-使用可視化方式【推薦】
3.1.1-下載工具
(1)首頁將下載好資源包裡面的【PackageExplorer.4.4.72】文件夾,複製到一個固定的地方,不要刪除了。[西瓜程式猿]放在【D:\RuanjianAnzhuang\PackageExplorer.4.4.72】路徑下了,我們打開【NuGetPackageExplorer.exe】應用程式。
如果需要在官網下載最新版,可以點擊這個鏈接:
官方下載:https://www.microsoft.com/zh-cn/p/nuget-package-explorer/9wzdncrdmdm3?activetab=pivot:overviewtab
(2)然後點擊【Create a new package (CtrI+N)】創建一個新Package。
3.1.2-配置相關包
(1)新增【lib】文件夾。
(2)然後新選擇響應的框架版本,會自動創建版本文件夾,比如[西瓜程式猿]創建的【Kimi.RocketMQ.NET】包是給.NET Framework使用的,我這邊就先創建這些。
也可以自己創建文件夾,比如沒有4.8版本,那可以自行創建一個為【net48】文件夾。
(3)然後再每個文件夾中,添加之前打包後的DLL包。
添加好文件後,目錄是這樣的:
(3)然後編輯上傳數據,選擇【Edit】——>【Edit Metadata】,然後填寫相關信息。
(4)然後如果有依賴性,還需添加項目依賴,依賴哪些框架比如.NETFramework,.NETStandard等。
(5)然後編輯完成,看一下效果。
(5)點擊這個可以看到配置的源代碼。
代碼:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Kimi.RocketMQ.NET</id>
<version>1.0.9</version>
<title>Kimi.RocketMQ.NET</title>
<authors>西瓜程式猿</authors>
<owners>西瓜程式猿</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<projectUrl>https://www.cnblogs.com/kimiliucn/p/17662052.html</projectUrl>
<iconUrl>http://xxx.xxx.xxx.192:7980/Temp_Storage/Images/2023-08-31/9dd8dbcccd314a31835c69ea344b0216.png</iconUrl>
<description>.NET Framework使用RocketMQ(阿裡雲版)</description>
<summary>.NET Framework使用RocketMQ(阿裡雲版)</summary>
<releaseNotes>發佈1.0.9</releaseNotes>
<copyright>Copyright © 2023 西瓜程式猿</copyright>
<language>zh-CN</language>
<tags>Kimi.RocketMQ.NET</tags>
<dependencies>
<group targetFramework=".NETFramework4.8" />
</dependencies>
</metadata>
</package>
(6)點擊【File】——>【Save As】保存nupkg文件。
文件截圖:
3.3-上傳到nuget伺服器
(1)點擊【File】——>【Publish】。
(2)【Publish key or PAT】填寫秘鑰Key,然後點擊【Publish】發佈,只要沒報錯就表示上傳成功了。
(3)稍等1-3分鐘,然後會收到上傳成功的郵件通知。
(4)然後可以去官網看看是否此版本發佈成功了。
3.2-使用命令方式
3.2.1-下載軟體配置環境
(1)點擊下麵地址下載軟體,選擇比較新的版本即可(如果是通過上面的鏈接下載了資源包,就可以跳過這一步了,直接看第二步驟)。
下載好後得到:
(2)把下載好的【nuget.exe】這個文件,放在一個固定的地方,不要刪了。[西瓜程式猿]放在這個目錄【D:\RuanjianAnzhuang\nuget_client】。
(3)然後來配置環境變數。點擊【此電腦】,右擊【屬性】——>高級系統設置——>環境變數——>系統變數——>選擇Path——>編輯——>新建——>填寫【D:\RuanjianAnzhuang\nuget_client】,大家根據自己路徑配置哈。
(4)測試是否配置成功。按【win+R】鍵,然後輸入cmd,在輸入【nuget】命令查看。
命令:nuget
配置成功截圖:
配置失敗截圖:
3.2.2-配置全局Push源地址
配置模擬的push源為nuget.org,輸入以下命令:
nuget config -Set DefaultPushSource=nuget.org
3.2.3-設置API Key秘鑰
使用下麵命令進行設置Nuget的API Key(將my_api_key參數替換成自己生成的APIKey)
nuget setApiKey my_api_key
成功截圖:
3.2.4-生成nuspec文件
使用【nuget spec】命令生產.nuspec 文件,文件xml格式的。
命令:nuget spec
成功截圖:
3.2.5-生成nupkg文件
使用【nuget pack】命令生成.nupkg文件。
命令:nuget pack
成功截圖:
3.2.6-上傳到nuget伺服器
輸入以下命令,可以將.nupkg包上傳發佈到NuGet伺服器上(將my_api_key參數替換成自己生成的APIKey)。
命令:nuget push Kimi.RocketMQ.NET.1.0.0.nupkg my_api_key -Source https://api.nuget.org/v3/index.json
上傳成功後的郵件:
上傳成功後,需要等待10幾分鐘。官方需要先審核,審核通過後還需要進行重新索引,然後還需要同步。等待10多分鐘後,就可以搜索到上傳的包了。
四、NuGet包的管理
4.1-刪除NuGet包
NuGet包無法刪除,但是隱藏對應的版本。
選擇要隱藏的版本後,然後取消勾選【List in search results】,然後點擊【Save】保存即可。
效果(隱藏後就搜索不到1.0.0的版本了):
五、防踩坑指南
5.1-響應狀態代碼不指示成功: 403
詳細錯誤:
響應狀態代碼不指示成功: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.)。
解決方案:提示秘鑰Key無效或者過期了,可以去後臺重新生成一個,按照【1.2】步驟操作。
5.2-This package has not been indexed yet
詳細錯誤:
This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.
錯誤截圖:
解決方案:錯誤提示說"此程式包尚未編製索引。它將出現在搜索結果中,並可在索引完成後進行安裝/還原"。所以需要等10分鐘左右就行了,等程式包編製好索引就可以在NuGet客戶端搜索到了。
5.3-在以下主源中找不到包“Kimi.RocketMQ.NET 1.0.5”
詳細錯誤:
在以下主源中找不到包“Kimi.RocketMQ.NET 1.0.5”:“https://api.nuget.org/v3/index.json”。請驗證你的所有聯機包源是否都可用,以及是否正確指定了包 ID、版本。
解決方案:等待10分鐘左右就能找到了。因為上傳成功後需要進行編製索引、同步等操作。
5.4-響應狀態代碼不指示成功: 409
詳細錯誤:
響應狀態代碼不指示成功: 409 (A package with ID 'Kimi.RocketMQ.NET' and version '1.0.5' already exists and cannot be modified.)。
錯誤截圖:
解決方案:說明這個【1.0.9】的版本已經存在了,修改版本號重新發佈即可。
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17675287.html
版權聲明:本文為原創文章,版權歸 [西瓜程式猿] 所有,轉載請註明出處,有任何疑問請私信咨詢。
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17675287.html