Tworzenie paczek NuGet

W skrócie opisze jak tworzyć paczki nuget bezpośrednio z projektu VS.

Wszystkie polecenia będziemy wykonywać narzędziem nuget.exe

Tworzenie paczki release

W folderze z projektem (plik .csporj) uruchamiamy

nuget spec

Po uruchomieniu zostanie utworzony specjalny plik .nuspec o takiej samej nazwie jak nazwa projektu. Plik ten zawiera meta informację na temat paczki.

[xml]
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>My project release notes</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>tag1 tag2</tags>
</metadata>
</package>
[/xml]

Dane w formacie $xyz$ oznaczają że te informacje są pobierane z pliku dll.

Gdy plik nuspec mamy już gotowy to budujemy projekt i tworzymy paczkę uruchamiając polecenie:

nuget pack MyProject.csproj

Jeśli chcemy dodać zależne biblioteki to dodajemy parametr IncludeReferencedProjects

nuget pack MyProject.csproj -IncludeReferencedProjects -Prop Configuration=Release

Jeśli paczka się utworzy to wysyłamy ją na serwer poleceniem:

nuget push MyProject.1.0.0.nupkg -s http://yourdomain.com/nuget API_KEY

Tworzenie paczki prerelease

Jeśłi paczkę tworzymy z pliku projektu (.csproj lub .vbproj) to utworzenie paczki prelese ogranicza się do dodania atrybutu AssemblyInformationalVersionAttribute i określeniu wersji:

[assembly: AssemblyInformationalVersion("1.0.1-alpha")]

NuGet użyje tej wartości zamiast danych z AssemblyVersion.

Więcej informacji

Własny serwer NuGet

Każdy kto korzysta z VS wie co to NuGet i jak bardzo on upraszcza życie, dodawanie zewnętrznych bibliotek jest banalnie proste, aktualizacja do nowej wersji – jedno kliknięcie i gotowe. A co jeśli taki serwer możemy sobie sami postawić. O ile prostsze było by współdzielenie bibliotek we własnych projektach. Może w firmie której pracujecie dalej ręcznie podpinacie biblioteki, warto zaproponować postawienie takiego serwera – trwa to chwilę, a uprasza bardzo wiele.

Tworzenie własnego serwera

  1. Tworzymy pusty projekt ASP.NET Web Application (ASP.NET 4.x)
  2. Instalujemy paczkę NuGet.Server
  3. Wdrażamy aplikację na docelowy serwer
    NuGet jest dostępy pod adresem http://yourdomain/nuget
  4. Konfigurujemy i cieszymy się własnym serwerem NuGet

Konfiguracja

Konfiguracja to ustawienie odpowiednich wpisów w pliku web.config

Pierwsze co robimy to ustawienie klucza umożliwiającego wrzucanie paczek:

[xml]
<add key="apiKey" value="YOUR-API-KEY" />
[/xml]

Na czas testów możemy ustawić allowOverrideExistingPackageOnPush na true, co może się przydać jak zaczniemy uczyć się tworzyć paszki i wrzucać je na serwer.

[xml] <add key="allowOverrideExistingPackageOnPush" value="false" /> [/xml]

Wrzucanie paczek

Paczki wrzucamy aplikacją nuget.exe z parametrem push:

[bash]
nuget push {packagefile} -s http://yourdomain/nuget {apikey}
[/bash]

Kunfiguracja VisualStudio

Aby paczki z naszego serwera były widoczne w VS musimy dodać go do listy Package Sources. Aby to zrobić w VS 2015 otwieramy okno dodawania źródeł dla nugeta: Tools -> NuGet Package Manager -> Package Manager Settings.

W otwartym oknie wybieramy Package SourcesNuGet Package Sources

Klikamy dodaj i uzupełniamy dane naszego serwera.

Po zatwierdzeniu nasz serwer jest już widoczny na liście:NuGet Package Sources List

Teraz już możemy instalować z niego paczki.

Podsumowanie

Jak widać instalacja i konfiguracja własnego serwera NuGet to tylko kilka minut, a korzyść bardzo wiele. Myślę że warto to wdrożyć dla swoich projektów jak również w firmie jeśli dalej ręcznie podpinacie zewnętrzne biblioteki.

Więcej informacji: