1. 背景
網(wǎng)上大部分是自己搭建的,這里我在github 上直接拿別人的項目 https://github.com/loic-sharma/BaGet/releases
-
下載包
BaGet.png -
解壓到本地或者服務(wù)器上并修改 appsettings.json 文件
Nuget.png
"ApiKey": "69279c9e-c6f4-48ee-8d9d-72d38dab4b95",
"PackageDeletionBehavior": "harddelete",
"Urls":"http://*:9020",
"AllowPackageOverwrites": true,
- 完整的
{
"ApiKey": "69279c9e-c6f4-48ee-8d9d-72d38dab4b95",
"PackageDeletionBehavior": "harddelete",
"Urls":"http://*:9020",
"AllowPackageOverwrites": true,
"Database": {
"Type": "Sqlite",
"ConnectionString": "Data Source=baget.db"
},
"Storage": {
"Type": "FileSystem",
"Path": ""
},
"Search": {
"Type": "Database"
},
"Mirror": {
"Enabled": false,
// Uncomment this to use the NuGet v2 protocol
//"Legacy": true,
"PackageSource": "https://api.nuget.org/v3/index.json"
},
// Uncomment this to configure BaGet to listen to port 8080.
// See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps
//"Kestrel": {
// "Endpoints": {
// "Http": {
// "Url": "http://localhost:8080"
// }
// }
//},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Microsoft.Hosting.Lifetime": "Information",
"Default": "Warning"
}
}
}
}

上圖中是比較重要的幾個參數(shù),
“ApiKey”是密鑰,每次推送或者刪除Nuget包時都需要輸入這個代碼;
“Urls”是路由地址和端口號,原來是5000,需要改為8020;
“PackageDeletionBehavior"是刪除方式,默認(rèn)“Unlist”,刪除時不會將源文件刪除,只是在前端顯示時看不到了,這會導(dǎo)致再次*
推送同一個包時報錯,所以這改為"harddelete”,將原來的包徹底刪除。"AllowPackageOverwrites"是是否允許覆蓋,默認(rèn)“false”,不允許覆蓋,改為true之后推送新的包會將原來的包覆蓋掉。
3. 開啟nuget服務(wù)(用IIS部署和正常項目一樣)
- cmd 到目錄 ,執(zhí)行 dotnet BaGet.dll
4. 訪問地址

5 項目dll 打包



6. 推送
- dotnet nuget push -k <密鑰> -s http://192.168.1.:9/v3/index.json <包名>.nupkg
E:\項目\2022年項目\****\SdNurseryMall\src\com.uplus.tree\bin\Debug>dotnet nuget push -k 69279c9e-c6f4-48ee-8d9d-72d38dab4b95 -s http://192.168.1.***:9***/v3/index.json com.uplus.tree.1.0.0.nupkg
正在將 com.uplus.tree.1.0.0.nupkg 推送到 'http://192.168.1.**:90**/api/v2/package'...
PUT http://192.168.1.**:90**/api/v2/package/
Created http://192.168.1.**:90**/api/v2/package/ 1245 毫秒
已推送包。
7. 結(jié)果

8 . VS2019 中配置
-
在VS軟件中,選擇“工具-Nuget包管理器-程序包管理器設(shè)置”,選擇程序包源,
vs_nuget設(shè)置.png
nuget_org.png

-
第一個nuget.org就是默認(rèn)我們通過網(wǎng)絡(luò)獲取程序包的地址,第二個是我新添加的本地的nuget包地址,方法是點擊 “+”,新增源。在名稱中輸入我們?yōu)檫@個源起的名字,源中輸入路由地址,這個地址可以在服務(wù)的網(wǎng)頁上看到,如果是添加服務(wù)器源的話,就將IP改為對應(yīng)的地址就好。
更換網(wǎng)址.png
9. VS 中查看



9. 補充
刪除包:命令行輸入dotnet nuget delete -s http://localhost:8020/v3/index.json xxx 1.0.0,就可以把服務(wù)器上的包刪除掉,注意這里只寫“包名 版本號”就行,“.nupkg”的后綴也不用加。
需要注意這里的命令是在配置文件中沒有設(shè)置密鑰的情況下,如果設(shè)置了就需要在命令行中加入密鑰才可以執(zhí)行操作。
設(shè)置包的信息:在項目右鍵屬性,選擇打包,在里面可以設(shè)置版本號,作者等信息。下載自己推送的包
包已經(jīng)被推送到服務(wù)器上了,下面就是當(dāng)我們需要的時候下載它。在“工具-Nuget包管理器-管理解決方案的Nuget程序包”中最右邊“程序包源”選擇我們自己創(chuàng)建的"UplusNuget",就可以在左邊看到我們已經(jīng)推送的包,點擊包在右側(cè)會出現(xiàn)包的信息,選擇版本,進行下載。
關(guān)于包的依賴關(guān)系,如果A包依賴B包,我們將兩個包都已經(jīng)推送到服務(wù)器,那么在我們下載A包時,會自動也下載B包。如果服務(wù)器上只有A包,那么在下載時就會報錯,找不到B包。
關(guān)于包的加密,為了保障包的安全,防止下載 后對包進行反編譯,需要進行一些保護,但目前還沒有找到比較好的方式,待添加。




