通過 Sonatype Nexus 建立私有 Nuget Registry

續上篇,預設 Nexus 建立後,預設就支援 nuget,不用作太多的設定就可以上傳 nuget package

開發環境

  • Windows 11 Home
  • Rider 2024.2.7
  • Nexus 3.74.0.05

配置 NuGet

取得 nuget-hosted 位置

http://localhost:8081/repository/nuget-hosted/

配置 NuGet-hosted

Deployment policy

預設為 "Allow redeploy",我會改成 "Disable redeploy"

 

Realms

啟用 NuGet API-Key


設定 NuGet API Key

nuget setapikey ab3f95a8-280a-376c-807b-e205c24a2c09 -source http://localhost:8081/repository/{repository name}/

API Key 要保存好,關掉畫面就不會再出現了

 

上傳 NuGet package

建立 Library 專案

在 Lab.Nexus.Docker 路徑下,新增一個 Class Library 專案,名為 Lab.Nexus.Docker.Library 

寫了一段沒有甚麼用的碼

public class Message
{
    public string GetMessage()
    {
        return "Hello from the library!";
    }
}

 

打包 Library - dotnet pack

用 Windows Terminal 切到 Lab.Nexus.Docker.Library 專案目錄下,執行以下命令

dotnet pack --include-symbols -c Release /p:PackageVersion=1.0.2 -o ./app
PowerShell 7.4.6
PS D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library> dotnet pack --include-symbols -c Release /p:PackageVersion=1.0.2 -o ./app
  正在判斷要還原的專案...
  已還原 D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library\Lab.Nexus.Docker.Library.csproj (44 毫秒 內)。
  Lab.Nexus.Docker.Library -> D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library\bin\Release\net8.0\Lab.Nexus.Docker.Library.dll
  套件 Lab.Nexus.Docker.Library.1.0.2 遺漏讀我檔案。請移至 https://aka.ms/nuget/authoring-best-practices/readme 以了解套件讀我檔案很重要的原因。
  已成功建立封裝 'D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library\app\Lab.Nexus.Docker.Library.1.0.2.nupkg'。
  已成功建立封裝 'D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library\app\Lab.Nexus.Docker.Library.1.0.2.symbols.nupkg'。

有可用的工作負載更新。如需詳細資訊,請執行 `dotnet workload list`。
PS D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library>

 

產生以下檔案

 

上傳 NuGet package - dotnet nuget push

執行以下命令

dotnet nuget push ./app/Lab.Nexus.Docker.Library.1.0.2.symbols.nupkg --source "http://localhost:8081/repository/nuget-hosted/" --api-key ab3f95a8-280a-376c-807b-e205c24a2c09
PowerShell 7.4.6
PS D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library> dotnet nuget push ./app/Lab.Nexus.Docker.Library.1.0.2.symbols.nupkg --source "http://localhost:8081/repository/nuget-hosted/" --api-key ab3f95a8-280a-376c-807b-e205c24a2c09
正在將 Lab.Nexus.Docker.Library.1.0.2.symbols.nupkg 推送到 'http://localhost:8081/repository/nuget-hosted/'...
warn : 您正在使用 'HTTP' 來源 'http://localhost:8081/repository/nuget-hosted/' 執行 'push' 作業。未來的版本將移除非 HTTPS 存取。請考慮移轉至 'HTTPS' 來源。
  PUT http://localhost:8081/repository/nuget-hosted/
  Created http://localhost:8081/repository/nuget-hosted/ 47 毫秒
已推送您的套件。
PS D:\lab\sample.dotblog\Docker\Lab.Nexus.Docker\Lab.Nexus.Docker.Library>

 

在 nexus 查看 nuget-hosted 裡面的內容

 

加入 NuGet Source

我習慣在 C:\Users\yao\AppData\Roaming\NuGet 集中設定 nuget source

 

安裝 NuGet Package

搜尋 Lab.Nexus.Docker.Library 並安裝

以上,順利的把 NuGet Package 推到 nexus 了

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo