dotnet pack
Ten artykuł dotyczy: ✔️ .NET Core 3.1 SDK i nowsze wersje
Nazwa
dotnet pack
- Pakuje kod do pakietu NuGet.
Streszczenie
dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
[--force] [--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Opis
Polecenie dotnet pack
kompiluje projekt i tworzy pakiety NuGet. Wynikiem tego polecenia jest pakiet NuGet (czyli plik nupkg ).
Jeśli chcesz wygenerować pakiet zawierający symbole debugowania, dostępne są dwie opcje:
--include-symbols
— tworzy pakiet symboli.--include-source
— tworzy pakiet symboli z folderemsrc
wewnątrz zawierającym pliki źródłowe.
Zależności NuGet spakowanego projektu są dodawane do pliku nuspec , więc są one prawidłowo rozwiązywane podczas instalowania pakietu. Jeśli spakowany projekt zawiera odwołania do innych projektów, inne projekty nie są uwzględniane w pakiecie. Obecnie musisz mieć pakiet dla każdego projektu, jeśli masz zależności między projektami.
Domyślnie najpierw dotnet pack
kompiluje projekt. Jeśli chcesz uniknąć tego zachowania, przekaż --no-build
tę opcję. Ta opcja jest często przydatna w scenariuszach kompilacji ciągłej integracji(CI), w których wiesz, że kod został wcześniej skompilowany.
Uwaga
W niektórych przypadkach nie można wykonać niejawnej kompilacji. Taka sytuacja może wystąpić, gdy GeneratePackageOnBuild
jest ustawiona, aby uniknąć zależności cyklicznej między miejscami docelowymi kompilacji i pakietów. Kompilacja może również zakończyć się niepowodzeniem, jeśli istnieje zablokowany plik lub inny problem.
Właściwości programu MSBuild można podać do dotnet pack
polecenia dla procesu pakowania. Aby uzyskać więcej informacji, zobacz Właściwości docelowe pakietu NuGet i dokumentacja programu MSBuild Command-Line. W sekcji Przykłady pokazano, jak używać przełącznika MSBuild -p
dla kilku różnych scenariuszy.
Uwaga
Projekty sieci Web nie są pakowalne.
Niejawne przywracanie
Nie trzeba uruchamiaćdotnet restore
, ponieważ jest ona uruchamiana niejawnie przez wszystkie polecenia, które wymagają przywrócenia, takie jak dotnet new
, , dotnet build
dotnet run
, dotnet test
, , dotnet publish
i dotnet pack
. Aby wyłączyć niejawne przywracanie, użyj --no-restore
opcji .
Polecenie dotnet restore
jest nadal przydatne w niektórych scenariuszach, w których jawne przywracanie ma sens, takie jak kompilacje ciągłej integracji w Azure DevOps Services lub w systemach kompilacji, które muszą jawnie kontrolować, kiedy odbywa się przywracanie.
Aby uzyskać informacje na temat zarządzania kanałami informacyjnymi NuGet, zobacz dokumentacjędotnet restore
.
To polecenie obsługuje dotnet restore
opcje przekazywane w postaci długiej (na przykład --source
). Opcje formularza krótkiego, takie jak -s
, nie są obsługiwane.
Pobieranie manifestu obciążenia
Po uruchomieniu tego polecenia inicjuje asynchroniczne pobieranie manifestów reklamowych dla obciążeń. Jeśli pobieranie jest nadal uruchomione po zakończeniu tego polecenia, pobieranie zostanie zatrzymane. Aby uzyskać więcej informacji, zobacz Manifesty reklamowe.
Argumenty
PROJECT | SOLUTION
Projekt lub rozwiązanie do spakowania. Jest to ścieżka do pliku csproj, vbproj lub fsproj albo pliku rozwiązania lub katalogu. Jeśli nie zostanie określony, polecenie przeszukuje bieżący katalog dla pliku projektu lub rozwiązania.
Opcje
-c|--configuration <CONFIGURATION>
Definiuje konfigurację kompilacji. Wartość domyślna dla większości projektów to
Debug
, ale można zastąpić ustawienia konfiguracji kompilacji w projekcie.
--force
Wymusza rozwiązanie wszystkich zależności, nawet jeśli ostatnie przywracanie zakończyło się pomyślnie. Określenie tej flagi jest takie samo jak usunięcie pliku project.assets.json .
-?|-h|--help
Wyświetla opis sposobu używania polecenia .
--include-source
Zawiera symbole debugowania pakiety NuGet oprócz zwykłych pakietów NuGet w katalogu wyjściowym. Pliki źródeł znajdują się w folderze
src
w pakiecie symboli.--include-symbols
Zawiera symbole debugowania pakiety NuGet oprócz zwykłych pakietów NuGet w katalogu wyjściowym.
--interactive
Umożliwia zatrzymanie polecenia i oczekiwanie na wprowadzenie lub działanie użytkownika. Na przykład w celu ukończenia uwierzytelniania. Dostępne od zestawu .NET Core 3.0 SDK.
--no-build
Nie kompiluje projektu przed pakowaniem. Ponadto niejawnie ustawia flagę
--no-restore
.--no-dependencies
Ignoruje odwołania do projektu i przywraca tylko projekt główny.
--no-restore
Nie wykonuje niejawnego przywracania podczas uruchamiania polecenia.
--nologo
Nie wyświetla baneru startowego ani wiadomości o prawach autorskich.
-o|--output <OUTPUT_DIRECTORY>
Umieszcza wbudowane pakiety w określonym katalogu.
Zestaw .NET 7.0.200 SDK
Jeśli w zestawie SDK w wersji 7.0.200 zostanie określona
--output
opcja podczas uruchamiania tego polecenia w rozwiązaniu, interfejs wiersza polecenia wyemituje błąd. Jest to regresja i została naprawiona w wersji 7.0.201 i nowszych wersji zestawu .NET SDK.
--runtime <RUNTIME_IDENTIFIER>
Określa docelowe środowisko uruchomieniowe w celu przywrócenia pakietów. Aby uzyskać listę identyfikatorów środowiska uruchomieniowego (RID), zobacz wykaz identyfikatorów RID.
-s|--serviceable
Ustawia flagę z możliwością obsługi w pakiecie. Aby uzyskać więcej informacji, zobacz Blog platformy .NET: .NET Framework 4.5.1 obsługuje Aktualizacje zabezpieczeń firmy Microsoft dla bibliotek NuGet platformy .NET.
-v|--verbosity <LEVEL>
Ustawia poziom szczegółowości polecenia. Dozwolone wartości to
q[uiet]
, ,n[ormal]
m[inimal]
,d[etailed]
idiag[nostic]
. Aby uzyskać więcej informacji, zobacz LoggerVerbosity.
--version-suffix <VERSION_SUFFIX>
Definiuje wartość
VersionSuffix
właściwości MSBuild. Wpływ tej właściwości na wersję pakietu zależy od wartościVersion
właściwości iVersionPrefix
, jak pokazano w poniższej tabeli:Właściwości z wartościami Wersja pakietu Brak 1.0.0
Version
$(Version)
VersionPrefix
Tylko$(VersionPrefix)
VersionSuffix
Tylko1.0.0-$(VersionSuffix)
VersionPrefix
iVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Jeśli chcesz użyć
--version-suffix
polecenia , określVersionPrefix
plik projektu, a nieVersion
w pliku projektu. Jeśli na przykładVersionPrefix
element ma0.1.2
wartość i zostanie przekazana--version-suffix rc.1
dodotnet pack
elementu , wersja pakietu będzie mieć wartość0.1.2-rc.1
.Jeśli
Version
wartość ma wartość i przekazujesz--version-suffix
dodotnet pack
elementu , wartość określona dla--version-suffix
jest ignorowana.
Przykłady
Spakuj projekt w bieżącym katalogu:
dotnet pack
Spakuj
app1
projekt:dotnet pack ~/projects/app1/project.csproj
Spakuj projekt w bieżącym katalogu i umieść wynikowe pakiety w folderze
nupkgs
:dotnet pack --output nupkgs
Spakuj projekt w bieżącym katalogu do
nupkgs
folderu i pomiń krok kompilacji:dotnet pack --no-build --output nupkgs
Za pomocą sufiksu wersji projektu skonfigurowanego jako
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
w pliku csproj spakuj bieżący projekt i zaktualizuj wynikowy pakiet z podanym sufiksem:dotnet pack --version-suffix "ci-1234"
Ustaw wersję pakietu na
2.1.0
wartość z właściwościąPackageVersion
MSBuild:dotnet pack -p:PackageVersion=2.1.0
Spakuj projekt dla określonej platformy docelowej:
dotnet pack -p:TargetFrameworks=net45
Spakuj projekt i użyj określonego środowiska uruchomieniowego (Windows 10) dla operacji przywracania:
dotnet pack --runtime win10-x64
Spakuj projekt przy użyciu pliku nuspec :
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
Aby uzyskać informacje o sposobie używania
NuspecFile
elementów ,NuspecBasePath
iNuspecProperties
, zobacz następujące zasoby: