5.2 Osnove NuGet

Ta stran razlaga, kaj je NuGet in kako ustvarite pakete za nativne knjižnice.


Kaj je NuGet?

NuGet je upravljalnik paketov za .NET - primerljiv z:

  • npm za JavaScript
  • pip za Python
  • Maven za Java

NuGet paket (.nupkg) vsebuje:

  • Prevedene DLL-je
  • Metapodatke (ime, različica, avtor)
  • Nativne knjižnice (opcijsko)

Zakaj NuGet paket?

Brez NuGet Z NuGet
———————
Ročno kopiranje DLL-jev dotnet add package …
Ročno upravljanje različic Samodejne posodobitve
Vsak projekt posamezno Centralni repozitorij

Struktura paketa za nativne knjižnice

NuGet podpira nativne DLL-je preko runtimes/:

MojPaket.1.0.0.nupkg/
├── lib/
│   └── net8.0/
│       └── MojPaket.dll        # .NET ovoj
├── runtimes/
│   ├── win-x64/
│   │   └── native/
│   │       ├── libcrypto-3-x64.dll
│   │       └── libssl-3-x64.dll
│   └── linux-x64/
│       └── native/
│           ├── libcrypto.so.3
│           └── libssl.so.3
└── MojPaket.nuspec

Preprost primer .nuspec

Ustvarite datoteko OpenSsl.Native.nuspec:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>OpenSsl.Native</id>
    <version>3.6.0</version>
    <authors>Vaše ime</authors>
    <description>OpenSSL 3.6.0 Native Libraries s podporo za Post-Quantum</description>
    <tags>openssl cryptography post-quantum ml-dsa ml-kem</tags>
  </metadata>
  <files>
    <!-- Windows x64 -->
    <file src="win-x64\libcrypto-3-x64.dll" target="runtimes\win-x64\native\" />
    <file src="win-x64\libssl-3-x64.dll" target="runtimes\win-x64\native\" />
 
    <!-- Linux x64 -->
    <file src="linux-x64\libcrypto.so.3" target="runtimes\linux-x64\native\" />
    <file src="linux-x64\libssl.so.3" target="runtimes\linux-x64\native\" />
  </files>
</package>

Ustvarjanje paketa

1. Priprava datotek

# Ustvarjanje strukture imenikov
mkdir nuget-package
mkdir nuget-package\win-x64
mkdir nuget-package\linux-x64
 
# Kopiranje DLL-jev
copy "D:\Projects\openssl-3.6.0\bin\bin\libcrypto-3-x64.dll" nuget-package\win-x64\
copy "D:\Projects\openssl-3.6.0\bin\bin\libssl-3-x64.dll" nuget-package\win-x64\
 
# Ustvarjanje .nuspec (glejte zgoraj)

2. Gradnja paketa

cd nuget-package
 
# Namestitev NuGet CLI (če ni na voljo)
winget install Microsoft.NuGet
 
# Ustvarjanje paketa
nuget pack OpenSsl.Native.nuspec
 
# Rezultat: OpenSsl.Native.3.6.0.nupkg

Lokalni NuGet feed

Za interno uporabo lahko nastavite lokalni NuGet feed:

1. Ustvarjanje mape za feed

mkdir C:\NuGetFeed
copy OpenSsl.Native.3.6.0.nupkg C:\NuGetFeed\

2. Registracija feeda v NuGet.config

Ustvarite NuGet.config v mapi projekta:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="LocalFeed" value="C:\NuGetFeed" />
  </packageSources>
</configuration>

3. Uporaba paketa

dotnet add package OpenSsl.Native --version 3.6.0 --source C:\NuGetFeed

Z .NET SDK Pack

Alternativno lahko pakirate neposredno iz .csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <PackageId>OpenSsl.Native</PackageId>
    <Version>3.6.0</Version>
    <Authors>Vaše ime</Authors>
    <Description>OpenSSL 3.6.0 Native Libraries</Description>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>
 
  <ItemGroup>
    <None Include="runtimes\**\*" Pack="true" PackagePath="runtimes\" />
  </ItemGroup>
</Project>

Nato:

dotnet pack -c Release

Nastavitev omrežnega feeda

Za ekipe: feed na omrežnem disku

Strežniška stran

# Ustvarjanje skupne rabe (kot administrator)
New-SmbShare -Name "NuGetFeed" -Path "D:\NuGetFeed" -ReadAccess "Everyone"

Odjemalska stran

<!-- NuGet.config -->
<configuration>
  <packageSources>
    <add key="InternalFeed" value="\\server\NuGetFeed" />
  </packageSources>
</configuration>

Nasveti

Verzioniranje:

  • Semantično verzioniranje: MAJOR.MINOR.PATCH
  • OpenSSL 3.6.0 → Paket 3.6.0
  • Lastni popravki → 3.6.0.1, 3.6.0.2

Brez skrivnosti v paketih!

  • Brez API ključev
  • Brez zasebnih ključev
  • Brez gesel v konfiguracijah

Naprej na


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: dne 15.12.2025 ob 21:22