Tworzenie pakietu przy użyciu interfejsu wiersza polecenia nuget.exe
Bez względu na to, co pakiet robi lub jaki kod zawiera, należy użyć jednego z narzędzi interfejsu wiersza polecenia lub , aby spakować tę funkcjonalność do składnika, nuget.exe
dotnet.exe
który może być udostępniany i używany przez dowolną liczbę innych deweloperów. Aby zainstalować narzędzia interfejsu wiersza polecenia NuGet, zobacz Instalowanie narzędzi klienckich NuGet. Należy pamiętać, że program Visual Studio nie zawiera automatycznie narzędzia interfejsu wiersza polecenia.
W przypadku projektów innych niż zestaw SDK, zazwyczaj projektów .NET Framework, wykonaj kroki opisane w tym artykule, aby utworzyć pakiet. Aby uzyskać instrukcje krok po kroku przy użyciu programu Visual Studio i interfejsu
nuget.exe
wiersza polecenia, zobacz Tworzenie i publikowanie pakietu programu .NET Framework.W przypadku projektów .NET Core i .NET Standard korzystających z formatu zestawu SDK oraz innych projektów w stylu zestawu SDK zobacz Tworzenie pakietu NuGet przy użyciu interfejsu wiersza polecenia dotnet.
W przypadku projektów migrowanych z
packages.config
do packageReference użyj polecenia msbuild -t:pack.
Technicznie rzecz biorąc, pakiet NuGet to tylko plik ZIP, którego nazwa została zmieniona z rozszerzeniem i którego zawartość jest zgodna z .nupkg
niektórymi konwencjami. W tym temacie opisano szczegółowy proces tworzenia pakietu spełniającego te konwencje.
Pakowanie rozpoczyna się od skompilowanego kodu (zestawów), symboli i/lub innych plików, które mają być dostarczane jako pakiet (zobacz Przegląd i przepływ pracy). Ten proces jest niezależny od kompilowania lub generowania w inny sposób plików, które przechodzą do pakietu, chociaż można pobierać z informacji w pliku projektu w celu zachowania synchronizacji skompilowanych zestawów i pakietów.
Ważne
Ten temat dotyczy projektów innych niż zestaw SDK, zazwyczaj projektów innych niż projekty .NET Core i .NET Standard przy użyciu programu Visual Studio 2017 i nowszych wersji oraz pakietów NuGet 4.0 lub nowszych.
Wybieranie zestawów do spakowania
Większość pakietów ogólnego przeznaczenia zawiera co najmniej jeden zestaw, którego inni deweloperzy mogą używać we własnych projektach.
Ogólnie rzecz biorąc, najlepiej mieć jeden zestaw na pakiet NuGet, pod warunkiem, że każdy zestaw jest niezależnie przydatny. Jeśli na przykład masz element
Utilities.dll
zależnyParser.dll
od elementu iParser.dll
jest on przydatny samodzielnie, utwórz jeden pakiet dla każdego z nich. Dzięki temu deweloperzy mogą używaćParser.dll
niezależnie odUtilities.dll
programu .Jeśli biblioteka składa się z wielu zestawów, które nie są niezależnie przydatne, warto połączyć je w jeden pakiet. Korzystając z poprzedniego przykładu, jeśli
Parser.dll
zawiera kod, który jest używany tylko przezUtilities.dll
program , wówczas należy zachowaćParser.dll
ten sam pakiet.Podobnie, jeśli
Utilities.dll
zależy odUtilities.resources.dll
, gdzie ponownie ten ostatni nie jest przydatny samodzielnie, umieść oba w tym samym pakiecie.
Zasoby są w rzeczywistości specjalnym przypadkiem. Po zainstalowaniu pakietu w projekcie nuGet automatycznie dodaje odwołania do zestawów do bibliotek DLL pakietu, z wyłączeniem tych, które są nazwane.resources.dll
, ponieważ zakłada się, że mają być zlokalizowane zestawy satelitarne (zobacz Tworzenie zlokalizowanych pakietów). Z tego powodu należy unikać używania .resources.dll
plików, które w przeciwnym razie zawierają podstawowy kod pakietu.
Jeśli biblioteka zawiera zestawy międzyoperackich modelu COM, postępuj zgodnie z dodatkowymi wytycznymi w temacie Tworzenie pakietów z zestawami międzyoperacowymi modelu COM.
Rola i struktura pliku nuspec
Gdy już wiesz, jakie pliki chcesz spakować, następnym krokiem jest utworzenie manifestu pakietu w .nuspec
pliku XML.
Manifest:
- Opisuje zawartość pakietu i sam jest zawarty w pakiecie.
- Napędza zarówno tworzenie pakietu, jak i instruuje NuGet, jak zainstalować pakiet w projekcie. Na przykład manifest identyfikuje inne zależności pakietów, takie jak NuGet może również instalować te zależności po zainstalowaniu głównego pakietu.
- Zawiera zarówno wymagane, jak i opcjonalne właściwości, jak opisano poniżej. Aby uzyskać szczegółowe informacje, w tym inne właściwości, które nie zostały wymienione tutaj, zobacz dokumentację narzędzia .nuspec.
Wymagane właściwości:
- Identyfikator pakietu, który musi być unikatowy w całej galerii, która hostuje pakiet.
- Określony numer wersji w postaci Major.Minor.Patch[-Sufiks] gdzie -Sufiks identyfikuje wersje wstępne
- Tytuł pakietu powinien być wyświetlany na hoście (na przykład nuget.org)
- Informacje o tworzeniu i właścicielu.
- Długi opis pakietu.
Typowe właściwości opcjonalne:
- Informacje o wersji
- Informacje o prawach autorskich
- Krótki opis interfejsu użytkownika Menedżer pakietów w programie Visual Studio
- Identyfikator ustawień regionalnych
- Adres URL projektu
- Licencja jako wyrażenie lub plik (
licenseUrl
jest przestarzała, zamiast tego użyjlicense
elementu metadanych nuspec) - Plik ikony (
iconUrl
jest przestarzałym zamiast tego użyjicon
elementu metadanych nuspec) - Listy zależności i odwołań
- Tagi, które ułatwiają wyszukiwanie w galerii
Poniżej przedstawiono typowy (ale fikcyjny) .nuspec
plik z komentarzami opisującym właściwości:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Identifier that must be unique within the hosting gallery -->
<id>Contoso.Utility.UsefulStuff</id>
<!-- Package version number that is used when resolving dependencies -->
<version>1.8.3</version>
<!-- Authors contain text that appears directly on the gallery -->
<authors>Dejana Tesic, Rajeev Dey</authors>
<!--
Owners are typically nuget.org identities that allow gallery
users to easily find other packages by the same owners.
-->
<owners>dejanatc, rjdey</owners>
<!-- Project URL provides a link for the gallery -->
<projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>
<!-- License information is displayed on the gallery -->
<license type="expression">Apache-2.0</license>
<!-- Icon is used in Visual Studio's package manager UI -->
<icon>icon.png</icon>
<!--
If true, this value prompts the user to accept the license when
installing the package.
-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!-- Any details about this particular release -->
<releaseNotes>Bug fixes and performance improvements</releaseNotes>
<!--
The description can be used in package manager UI. Note that the
nuget.org gallery uses information you add in the portal.
-->
<description>Core utility functions for web applications</description>
<!-- Copyright information -->
<copyright>Copyright ©2016 Contoso Corporation</copyright>
<!-- Tags appear in the gallery and can be used for tag searches -->
<tags>web utility http json url parsing</tags>
<!-- Dependencies are automatically installed when the package is installed -->
<dependencies>
<dependency id="Newtonsoft.Json" version="9.0" />
</dependencies>
</metadata>
<!-- A readme.txt to display when the package is installed -->
<files>
<file src="readme.txt" target="" />
<file src="icon.png" target="" />
</files>
</package>
Aby uzyskać szczegółowe informacje na temat deklarowania zależności i określania numerów wersji, zobacz packages.config i Package versioning (Wersje pakietów). Istnieje również możliwość uwidocznego stosowania zasobów z zależności bezpośrednio w pakiecie przy użyciu include
atrybutów i exclude
dla dependency
elementu . Zobacz .nuspec Reference - Dependencies (Dokumentacja narzędzia .nuspec — zależności).
Ponieważ manifest jest zawarty w pakiecie utworzonym na jego podstawie, możesz znaleźć dowolną liczbę dodatkowych przykładów, sprawdzając istniejące pakiety. Dobrym źródłem jest folder global-packages na komputerze, którego lokalizacja jest zwracana przez następujące polecenie:
nuget locals -list global-packages
Przejdź do dowolnego folderu package\version , skopiuj .nupkg
plik do .zip
pliku, a następnie otwórz .zip
ten plik i sprawdź .nuspec
w nim.
Uwaga
Podczas tworzenia elementu .nuspec
z projektu programu Visual Studio manifest zawiera tokeny, które są zastępowane informacjami z projektu podczas kompilowania pakietu. Zobacz Tworzenie pliku nuspec z projektu programu Visual Studio.
Tworzenie pliku nuspec
Tworzenie kompletnego manifestu zwykle rozpoczyna się od pliku podstawowego .nuspec
wygenerowanego za pomocą jednej z następujących metod:
- Katalog roboczy oparty na konwencji
- Biblioteka DLL zestawu
- Projekt programu Visual Studio
- Nowy plik z wartościami domyślnymi
Następnie edytujesz plik ręcznie, aby opisano dokładną zawartość, którą chcesz uzyskać w końcowym pakiecie.
Ważne
.nuspec
Wygenerowane pliki zawierają symbole zastępcze, które należy zmodyfikować przed utworzeniem pakietu za nuget pack
pomocą polecenia . To polecenie kończy się niepowodzeniem, jeśli .nuspec
element zawiera symbole zastępcze.
Z katalogu roboczego opartego na konwencji
Ponieważ pakiet NuGet to tylko plik ZIP, którego nazwa została zmieniona przy .nupkg
użyciu rozszerzenia, często najłatwiej jest utworzyć strukturę folderów w lokalnym systemie plików, a następnie utworzyć .nuspec
plik bezpośrednio z tej struktury. Następnie nuget pack
polecenie automatycznie dodaje wszystkie pliki w tej strukturze folderów (z wyłączeniem wszystkich folderów rozpoczynających się od .
, co pozwala zachować pliki prywatne w tej samej strukturze).
Zaletą tego podejścia jest to, że nie trzeba określać w manifeście, które pliki mają zostać uwzględnione w pakiecie (jak wyjaśniono w dalszej części tego tematu). Proces kompilacji może po prostu utworzyć dokładną strukturę folderów, która przechodzi do pakietu, i można łatwo dołączyć inne pliki, które mogą nie być częścią projektu w przeciwnym razie:
- Zawartość i kod źródłowy, który powinien zostać wstrzyknięty do projektu docelowego.
- Skrypty programu PowerShell
- Przekształcenia do istniejących plików konfiguracji i kodu źródłowego w projekcie.
Konwencje folderów są następujące:
Folder | opis | Akcja po zainstalowaniu pakietu |
---|---|---|
(katalog główny) | Lokalizacja readme.txt | Program Visual Studio wyświetla plik readme.txt w katalogu głównym pakietu po zainstalowaniu pakietu. |
lib/{tfm} | Pliki zestawów (), dokumentacji (.dll .xml ) i symboli (.pdb ) dla danej platformy docelowej Moniker (TFM) |
Zestawy są dodawane jako odwołania do kompilowania, a także środowiska uruchomieniowego; .xml i .pdb skopiowane do folderów projektu. Zobacz Obsługa wielu platform docelowych na potrzeby tworzenia podfolderów specyficznych dla platformy. |
ref/{tfm} | Pliki zestawów (.dll ) i symboli (.pdb ) dla danej struktury docelowej Moniker (TFM) |
Zestawy są dodawane jako odwołania tylko dla czasu kompilacji; Dlatego nic nie zostanie skopiowane do folderu bin projektu. |
środowiska uruchomieniowe | Zestaw specyficzny dla architektury (), symbol (.dll .pdb ) i pliki zasobów natywnych (.pri ) |
Zestawy są dodawane jako odwołania tylko dla środowiska uruchomieniowego; inne pliki są kopiowane do folderów projektu. Zawsze w folderze powinien istnieć odpowiedni zestaw /ref/{tfm} specyficzny dla programu (TFM), AnyCPU aby zapewnić odpowiedni zestaw czasu kompilacji. Zobacz Obsługa wielu platform docelowych. |
content | Dowolne pliki | Zawartość jest kopiowana do katalogu głównego projektu. Folder zawartości należy traktować jako katalog główny aplikacji docelowej, która ostatecznie korzysta z pakietu. Aby pakiet mógł dodać obraz w folderze /images aplikacji, umieść go w folderze content/images pakietu. |
build | (3.x+) MSBuild .targets i .props pliki |
Automatycznie wstawione do projektu. |
buildMultiTargeting | (4.0+) Program MSBuild .targets i .props pliki przeznaczone dla wielu platform docelowych |
Automatycznie wstawione do projektu. |
buildTransitive | (5.0+) MsBuild .targets i .props pliki, które przepływają przechodnio do dowolnego projektu zużywanego. Zobacz stronę funkcji. |
Automatycznie wstawione do projektu. |
tools | Skrypty i programy programu PowerShell dostępne z poziomu konsoli Menedżer pakietów | Folder tools jest dodawany do zmiennej środowiskowej PATH tylko dla konsoli Menedżer pakietów (w szczególności nie jako PATH ustawiony dla programu MSBuild podczas kompilowania projektu). |
Ponieważ struktura folderów może zawierać dowolną liczbę zestawów dla dowolnej liczby platform docelowych, ta metoda jest niezbędna podczas tworzenia pakietów obsługujących wiele struktur.
W każdym razie po utworzeniu żądanej struktury folderów uruchom następujące polecenie w tym folderze, aby utworzyć .nuspec
plik:
nuget spec
Ponownie wygenerowany .nuspec
element nie zawiera jawnych odwołań do plików w strukturze folderów. Narzędzie NuGet automatycznie dołącza wszystkie pliki po utworzeniu pakietu. Nadal trzeba jednak edytować wartości symboli zastępczych w innych częściach manifestu.
Z biblioteki DLL zestawu
W prostym przypadku tworzenia pakietu na podstawie zestawu można wygenerować .nuspec
plik z metadanych w zestawie przy użyciu następującego polecenia:
nuget spec <assembly-name>.dll
Użycie tego formularza zastępuje kilka symboli zastępczych w manifeście określonymi wartościami z zestawu. Na przykład <id>
właściwość jest ustawiona na nazwę zestawu i <version>
jest ustawiona na wersję zestawu. Inne właściwości w manifeście nie mają jednak pasujących wartości w zestawie i w związku z tym nadal zawierają symbole zastępcze.
Z projektu programu Visual Studio
Tworzenie elementu .nuspec
z pliku .csproj
lub .vbproj
jest wygodne, ponieważ inne pakiety zainstalowane w tym projekcie są automatycznie przywoływane jako zależności. Wystarczy użyć następującego polecenia w tym samym folderze co plik projektu:
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget spec
Wynikowy <project-name>.nuspec
plik zawiera tokeny , które są zastępowane w czasie pakowania wartościami z projektu, w tym odwołaniami do innych pakietów, które zostały już zainstalowane.
Jeśli masz zależności pakietów do uwzględnienia w pliku nuspec, zamiast tego użyj polecenia nuget pack
i pobierz plik nuspec z wygenerowanego pliku nupkg . Na przykład użyj następującego polecenia.
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget pack myproject.csproj
Token jest rozdzielany symbolami $
po obu stronach właściwości projektu. Na przykład <id>
wartość w manifeście wygenerowana w ten sposób zwykle jest wyświetlana w następujący sposób:
<id>$id$</id>
Ten token jest zastępowany wartością AssemblyName
pliku projektu w czasie pakowania. Aby uzyskać dokładne mapowanie wartości projektu na .nuspec
tokeny, zobacz dokumentację tokenów zastępczych.
Tokeny zwalniają z konieczności aktualizowania kluczowych wartości, takich jak numer wersji w programie podczas .nuspec
aktualizowania projektu. (Zawsze można zastąpić tokeny wartościami literału, jeśli jest to konieczne).
Pamiętaj, że podczas pracy z projektem programu Visual Studio dostępnych jest kilka dodatkowych opcji tworzenia pakietów, zgodnie z opisem w temacie Uruchamianie pakietu nuget w celu późniejszego wygenerowania pliku nupkg.
Pakiety na poziomie rozwiązania
Tylko nuGet 2.x. Niedostępne w programie NuGet 3.0 lub nowszym.
Program NuGet 2.x obsługiwał pojęcie pakietu na poziomie rozwiązania, który instaluje narzędzia lub dodatkowe polecenia dla konsoli Menedżer pakietów (zawartość tools
folderu), ale nie dodaje odwołań, zawartości ani dostosowań kompilacji do dowolnych projektów w rozwiązaniu. Takie pakiety nie zawierają żadnych plików w swoich bezpośrednich lib
folderach , content
lub build
, a żadna z jego zależności nie zawiera plików w odpowiednich lib
folderach , content
lub build
.
Program NuGet śledzi zainstalowane pakiety na poziomie rozwiązania w packages.config
pliku w .nuget
folderze, a nie w pliku projektu packages.config
.
Nowy plik z wartościami domyślnymi
Następujące polecenie tworzy domyślny manifest z symbolami zastępczymi, co gwarantuje rozpoczęcie od odpowiedniej struktury plików:
nuget spec [<package-name>]
Jeśli pominięto <nazwę> pakietu, wynikowy plik to Package.nuspec
. Jeśli podasz nazwę, taką jak Contoso.Utility.UsefulStuff
, plik to Contoso.Utility.UsefulStuff.nuspec
.
.nuspec
Wynikowy zawiera symbole zastępcze dla wartości, takich jak projectUrl
. Pamiętaj, aby edytować plik przed jego użyciem w celu utworzenia pliku końcowego .nupkg
.
Wybierz unikatowy identyfikator pakietu i ustawienie numeru wersji
Identyfikator pakietu (<id>
element) i numer wersji (<version>
element) to dwie najważniejsze wartości w manifeście, ponieważ jednoznacznie identyfikują dokładny kod zawarty w pakiecie.
Najlepsze rozwiązania dotyczące identyfikatora pakietu:
- Unikatowość: identyfikator musi być unikatowy w nuget.org lub w dowolnej galerii hostuje pakiet. Przed podjęciem decyzji o identyfikatorze wyszukaj odpowiednią galerię, aby sprawdzić, czy nazwa jest już używana. Aby uniknąć konfliktów, dobrym wzorcem jest użycie nazwy firmy jako pierwszej części identyfikatora, takiej jak
Contoso.
. - Nazwy podobne do przestrzeni nazw: postępuj zgodnie ze wzorcem podobnym do przestrzeni nazw na platformie .NET, używając notacji kropkowej zamiast łączników. Na przykład użyj polecenia
Contoso.Utility.UsefulStuff
, a nieContoso-Utility-UsefulStuff
lubContoso_Utility_UsefulStuff
. Konsumenci uważają również, że jest to przydatne, gdy identyfikator pakietu jest zgodny z przestrzeniami nazw używanymi w kodzie. - Przykładowe pakiety: jeśli utworzysz pakiet przykładowego kodu, który pokazuje, jak używać innego pakietu, dołącz
.Sample
jako sufiks do identyfikatora, jak wContoso.Utility.UsefulStuff.Sample
pliku . (Przykładowy pakiet będzie oczywiście mieć zależność od innego pakietu). Podczas tworzenia przykładowego pakietu użyj metody katalogów roboczych opartej na konwencji opisanej wcześniej. W folderzecontent
umieść przykładowy kod w folderze o nazwie\Samples\<identifier>
w formacie\Samples\Contoso.Utility.UsefulStuff.Sample
.
Najlepsze rozwiązania dotyczące wersji pakietu:
- Ogólnie rzecz biorąc, ustaw wersję pakietu tak, aby odpowiadała bibliotece, chociaż nie jest to ściśle wymagane. Jest to prosta kwestia, gdy ograniczasz pakiet do pojedynczego zestawu, zgodnie z opisem we wcześniejszej sekcji Wybieranie zestawów do pakietu. Ogólnie rzecz biorąc, należy pamiętać, że sam pakiet NuGet obsługuje wersje pakietów podczas rozpoznawania zależności, a nie wersji zestawów.
- W przypadku korzystania ze standardowego schematu wersji należy wziąć pod uwagę reguły przechowywania wersji NuGet, jak wyjaśniono w artykule Przechowywanie wersji pakietów.
Poniższa seria krótkich wpisów w blogu jest również przydatna do zrozumienia przechowywania wersji:
Dodawanie pliku readme i innych plików
Aby bezpośrednio określić pliki do uwzględnienia w pakiecie, użyj węzła w .nuspec
pliku, który jest zgodny z tagiem<metadata>
:<files>
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Add a readme -->
<file src="readme.txt" target="" />
<!-- Add files from an arbitrary folder that's not necessarily in the project -->
<file src="..\..\SomeRoot\**\*.*" target="" />
</files>
</package>
Napiwek
W przypadku korzystania z podejścia do katalogu roboczego opartego na konwencji można umieścić readme.txt w katalogu głównym pakietu i innej zawartości w folderze content
. W manifeście nie są wymagane żadne <file>
elementy.
Po dołączeniu pliku o nazwie readme.txt
w katalogu głównym pakietu program Visual Studio wyświetla zawartość tego pliku jako zwykły tekst bezpośrednio po zainstalowaniu pakietu. (Pliki Readme nie są wyświetlane dla pakietów zainstalowanych jako zależności). Na przykład poniżej przedstawiono sposób wyświetlania pliku readme pakietu HtmlAgilityPack:
Uwaga
Jeśli do pliku dołączysz pusty <files>
węzeł .nuspec
, pakiet NuGet nie zawiera żadnej innej zawartości w pakiecie innym niż zawartość w folderze lib
.
Uwzględnij rekwizyty i elementy docelowe programu MSBuild w pakiecie
W niektórych przypadkach możesz dodać niestandardowe obiekty docelowe kompilacji lub właściwości w projektach korzystających z pakietu, takich jak uruchamianie niestandardowego narzędzia lub procesu podczas kompilacji. Więcej informacji o rekwizytach i elementach docelowych programu MSBuild można dowiedzieć się w pakietach NuGet
Utwórz <package_id>.targets
lub <package_id>.props
(na przykład Contoso.Utility.UsefulStuff.targets
) w folderach kompilacji projektu.
Następnie w .nuspec
pliku pamiętaj, aby odwołać się do tych plików w węźle <files>
:
<?xml version="1.0"?>
<package >
<metadata minClientVersion="2.5">
<!-- ... -->
</metadata>
<files>
<!-- Include everything in \build -->
<file src="build\**" target="build" />
<!-- Other files -->
<!-- ... -->
</files>
</package>
Po dodaniu pakietów do projektu program NuGet automatycznie uwzględni te rekwizyty i obiekty docelowe.
Uruchom pakiet nuget, aby wygenerować plik nupkg
W przypadku korzystania z zestawu lub katalogu roboczego opartego na konwencji utwórz pakiet, uruchamiając nuget pack
plik .nuspec
, zastępując <project-name>
element określonym nazwą pliku:
nuget pack <project-name>.nuspec
W przypadku korzystania z projektu programu Visual Studio uruchom nuget pack
polecenie z plikiem projektu, który automatycznie ładuje plik projektu .nuspec
i zastępuje wszystkie tokeny w nim przy użyciu wartości w pliku projektu:
nuget pack <project-name>.csproj
Uwaga
Użycie pliku projektu bezpośrednio jest niezbędne do zastąpienia tokenu, ponieważ projekt jest źródłem wartości tokenu. Zamiana tokenu nie występuje w przypadku użycia nuget pack
z plikiem .nuspec
.
We wszystkich przypadkach wyklucza foldery rozpoczynające nuget pack
się od okresu, takiego jak .git
lub .hg
.
NuGet wskazuje, czy w .nuspec
pliku występują błędy, które wymagają poprawienia, takie jak zapominanie o zmianie wartości symboli zastępczych w manifeście.
Po nuget pack
pomyślnym zakończeniu będziesz mieć .nupkg
plik, który można opublikować w odpowiedniej galerii zgodnie z opisem w temacie Publikowanie pakietu.
Napiwek
Przydatnym sposobem sprawdzenia pakietu po jego utworzeniu jest otwarcie go w narzędziu Eksplorator pakietów. Zapewnia to graficzny widok zawartości pakietu i jego manifestu. Możesz również zmienić nazwę wynikowego .nupkg
.zip
pliku na plik i bezpośrednio eksplorować jego zawartość.
Opcje dodatkowe
Za pomocą różnych przełączników nuget pack
wiersza polecenia można wykluczyć pliki, zastąpić numer wersji w manifeście i zmienić folder wyjściowy, między innymi. Aby uzyskać pełną listę, zapoznaj się z dokumentacją poleceń pakietu.
Poniżej przedstawiono kilka opcji, które są typowe dla projektów programu Visual Studio:
Przywołyzowane projekty: jeśli projekt odwołuje się do innych projektów, możesz dodać przywołyne projekty w ramach pakietu lub jako zależności, używając
-IncludeReferencedProjects
opcji:nuget pack MyProject.csproj -IncludeReferencedProjects
Ten proces dołączania jest cyklicznych, więc jeśli
MyProject.csproj
odwołania do projektów B i C, a te projekty odwołują się do D, E i F, pliki z B, C, D, E i F są uwzględnione w pakiecie.Jeśli przywoływał projekt zawiera
.nuspec
własny plik, zamiast tego nuGet dodaje ten projekt, do którego odwołuje się zależność. Musisz spakować i opublikować ten projekt oddzielnie.Konfiguracja kompilacji: Domyślnie pakiet NuGet używa domyślnego zestawu konfiguracji kompilacji w pliku projektu, zazwyczaj Debuguj. Aby spakować pliki z innej konfiguracji kompilacji, takiej jak Release, użyj
-properties
opcji z konfiguracją:nuget pack MyProject.csproj -properties Configuration=Release
Symbole: aby uwzględnić symbole, które umożliwiają konsumentom przechodzenie przez kod pakietu w debugerze, użyj
-Symbols
opcji:nuget pack MyProject.csproj -symbols
Instalacja pakietu testowego
Przed opublikowaniem pakietu zazwyczaj chcesz przetestować proces instalowania pakietu w projekcie. Testy zapewniają, że wszystkie pliki muszą być przechowywane w odpowiednich miejscach w projekcie.
Instalacje można testować ręcznie w programie Visual Studio lub w wierszu polecenia przy użyciu zwykłych kroków instalacji pakietu.
W przypadku testowania automatycznego podstawowy proces jest następujący:
.nupkg
Skopiuj plik do folderu lokalnego.- Dodaj folder do źródeł pakietów przy użyciu
nuget sources add -name <name> -source <path>
polecenia (zobacz źródła nuget). Należy pamiętać, że należy ustawić to źródło lokalne tylko raz na dowolnym komputerze. - Zainstaluj pakiet z tego źródła przy użyciu polecenia
nuget install <packageID> -source <name>
, gdzie<name>
odpowiada nazwie źródła jako podanej .nuget sources
Określenie źródła gwarantuje, że pakiet jest zainstalowany tylko z tego źródła. - Sprawdź system plików, aby sprawdzić, czy pliki są poprawnie zainstalowane.
Następne kroki
Po utworzeniu pakietu, który jest plikiem .nupkg
, możesz opublikować go w wybranej galerii zgodnie z opisem w temacie Publikowanie pakietu.
Możesz również rozszerzyć możliwości pakietu lub w inny sposób obsługiwać inne scenariusze, zgodnie z opisem w następujących tematach:
- Przechowywanie wersji pakietów
- Obsługa wielu platform docelowych
- Przekształcenia plików źródłowych i konfiguracyjnych
- Lokalizacja
- Wersje wersji wstępnej
- Ustawianie typu pakietu
- Tworzenie pakietów przy użyciu zestawów międzyoperacyjnych MODELU COM
Na koniec istnieją dodatkowe typy pakietów, o których należy pamiętać: