自建 Nuget Server

前言

Nuget 是開發.Net必備的套件管理工具,NuGet Gallery 是大家所熟知公開的套件管理儲存庫
但如果是私人或是公司內部自用不想讓他人下載的套件
則需要自行在地端建立Nuget Server 或是推到雲服務套件的儲存庫(ex: Azure Devops Artifact)。

雖然目前大部分服務都上到雲端了,地端服務已陸續減少,但因我沒實做過架設地端 Nuget Server,所以還是實作紀錄一下過程。

建立 Nuget Server

建立 .Net Framework 4.6 空白的應用程式專案

開啟套件管理主控台 安裝 NuGet.Server

Install-Package NuGet.Server -Version 3.4.1

設定 Nuget Server apiKey

若在公司內網 方便大家使用的話 requireApiKey 設成 false就好
但若在公開網域 則加上ApiKey可防止別人亂動你的Nuget Server

開啟 Web.config 修改設定
requireApiKey = 執行 push\delete packages 是否需要 ApiKey
apiKey = 密碼

<add key="requireApiKey" value="true" />
<add key="apiKey" value="test123" />

部署 Nuget Server 至遠端伺服器

我在GCP有台VM測試機,先拿這台當作測試

部屬到 IIS上 並查看服務是否正常 (port 設 80)

此時已可透過外網訪問

順便建立domain & DNS
若要用GCP cloud domain & dns 服務,過程可參考 w4560000 - GCP Cloud Domains 註冊網域 & GCP Cloud DNS建立對應IP

目前為止已在遠端VM上建了Nuget Server服務,
http://nuget.leozheng0512.com/

建立 測試類別庫 用以上傳 Nuget Server

建立一個 .Net framework 4.7.2的類別庫專案 用以測試

開啟 CMD 切至 leotest_ClassLibrary.csproj 所屬資料夾
先用Visual Studio編譯專案(Ctrl + Shift + B) 或是 CMD 下 MSBUILD

該路徑為 VS2019 Enterprise 的 MSBuild.exe路徑

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" leotest_ClassLibrary.csproj -t:rebuild /p:Configuration=Release

透過 Nuget.exe Push Package 至 Nuget Server

先下載安裝 Nuget 官網 - Nuget.exe
可加入Nuget.exe所屬資料夾 至 環境變數中 方便使用

setx /m PATH "D:\Nuget;%PATH%"

建立 Nuget 套件檔(.nupkg)

nuget pack leotest_ClassLibrary.csproj -p Configuration=Release -Version 1

以下示範兩種 Nuget.exe 推送套件方式

  1. 透過 apiKey 推送套件

    每次推送都需要傳 apiKey

    nuget push leotest_ClassLibrary.1.0.0.nupkg test123 -source http://nuget.leozheng0512.com/nuget
    
  2. 透過 nuget source 推送套件

    設定一次本地的 nuget source之後推送套件就不用再傳 apkKey

    nuget sources add -name leozheng0512 -source http://nuget.leozheng0512.com/nuget/
    nuget setapikey test123 -source leozheng0512
    nuget push -source leozheng0512 leotest_ClassLibrary.1.0.0.nupkg
    

刪除 遠端 nuget server 套件

nuget delete leotest_ClassLibrary 1.0.0 test123 -source http://nuget.leozheng0512.com/nuget

刪除 本地的 nuget source

nuget sources Remove -Name leozheng0512

推送完套件後 設定Nuget套件來源來下載套件

開啟 Nuget 套件管理

點擊 套件來源 按鈕 > 新增套件來源

即可看到 剛剛上傳的類別庫

補充

可透過網址直接下載 .nupkg檔
不同版本的 Nuget Server 下載網址會不同
可查看 http://{NugetDomain}/nuget/Packages (套件資訊)

3.4.1版本的路徑是 http://{NugetDomain}/nuget/Packages(Id=‘{PackageID}’,Version=‘{PackageVersion}’)/Download

若是舊版2.11.2版本的路徑則是 http://{NugetDomain}/api/v2/package/{PackageID}/{PackageVersion}

參考資料


轉載請註明來源,若有任何錯誤或表達不清楚的地方,歡迎在下方評論區留言,也可以來信至 leozheng0621@gmail.com
如果文章對您有幫助,歡迎斗內(donate),請我喝杯咖啡

斗內💰

×

歡迎斗內

github