The attribute plugin is not available, 2fa disabled

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