dotnet restore
Ten artykuł dotyczy: ✔️ zestaw .NET Core 3.1 SDK i nowsze wersje
Nazwa
dotnet restore
— Przywraca zależności i narzędzia projektu.
Streszczenie
dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-parallel]
[-f|--force] [--force-evaluate] [--ignore-failed-sources]
[--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
[--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--use-lock-file] [-v|--verbosity <LEVEL>]
dotnet restore -h|--help
Opis
Projekt platformy .NET zwykle odwołuje się do bibliotek zewnętrznych w pakietach NuGet , które zapewniają dodatkowe funkcje. Do tych zależności zewnętrznych odwołuje się plik projektu (csproj lub .vbproj). Po uruchomieniu polecenia interfejs wiersza polecenia platformy dotnet restore
.NET używa narzędzia NuGet do wyszukiwania tych zależności i pobierania ich w razie potrzeby. Zapewnia również, że wszystkie zależności wymagane przez projekt są ze sobą zgodne i że nie ma między nimi konfliktów. Po zakończeniu wykonywania polecenia wszystkie zależności wymagane przez projekt są dostępne w lokalnej pamięci podręcznej i mogą być używane przez interfejs wiersza polecenia platformy .NET do kompilowania i uruchamiania aplikacji.
W większości przypadków nie trzeba jawnie używać dotnet restore
polecenia, ponieważ jeśli konieczne jest przywrócenie nuGet, następujące polecenia uruchamiają ją niejawnie:
Czasami może być niewygodne uruchomienie niejawnego przywracania NuGet za pomocą tych poleceń. Na przykład niektóre systemy zautomatyzowane, takie jak systemy kompilacji, muszą być jawnie wywoływane dotnet restore
, aby kontrolować, kiedy nastąpi przywracanie, aby mogły kontrolować użycie sieci. Aby zapobiec niejawnemu przywracaniu nuGet, możesz użyć flagi --no-restore
z dowolnymi z tych poleceń.
Uwaga
Podpisana weryfikacja pakietu podczas operacji przywracania wymaga magazynu głównego certyfikatu, który jest ważny zarówno w przypadku podpisywania kodu, jak i sygnatury czasowej. Aby uzyskać więcej informacji, zobacz Weryfikacja podpisanego pakietu NuGet.
Określanie kanałów informacyjnych
Aby przywrócić zależności, nuGet potrzebuje źródeł danych, w których znajdują się pakiety. Kanały informacyjne są zwykle udostępniane za pośrednictwem pliku konfiguracji nuget.config . Domyślny plik konfiguracji jest udostępniany po zainstalowaniu zestawu .NET SDK. Aby określić dodatkowe kanały informacyjne, wykonaj jedną z następujących czynności:
- Utwórz własny plik nuget.config w katalogu projektu. Aby uzyskać więcej informacji, zobacz Typowe konfiguracje nuGet i nuget.config różnice w dalszej części tego artykułu.
- Użyj
dotnet nuget
poleceń, takich jakdotnet nuget add source
.
Za pomocą -s
opcji można zastąpić kanały informacyjnenuget.config.
Aby uzyskać informacje o sposobie korzystania z uwierzytelnionych źródeł danych, zobacz Korzystanie z pakietów z uwierzytelnionych źródeł danych.
Folder pakietów globalnych
W przypadku zależności można określić lokalizację przywróconych pakietów podczas operacji przywracania przy użyciu argumentu --packages
. Jeśli nie zostanie określona, zostanie użyta domyślna pamięć podręczna pakietu NuGet, która znajduje się w .nuget/packages
katalogu głównym użytkownika we wszystkich systemach operacyjnych. Na przykład /home/user1 w systemie Linux lub C:\Users\user1 w systemie Windows.
Narzędzia specyficzne dla projektu
W przypadku narzędzi specyficznych dla projektu najpierw przywraca pakiet, dotnet restore
w którym jest zapakowane narzędzie, a następnie przechodzi do przywracania zależności narzędzia zgodnie z opisem w pliku projektu.
nuget.config różnice
dotnet restore
Zachowanie polecenia ma wpływ na ustawienia w pliku nuget.config, jeśli istnieje. Na przykład ustawienie globalPackagesFolder
elementu w nuget.config umieszcza przywrócone pakiety NuGet w określonym folderze. Jest to alternatywa dla określenia --packages
opcji w poleceniu dotnet restore
. Aby uzyskać więcej informacji, zobacz dokumentacjęnuget.config.
Istnieją trzy konkretne ustawienia, które dotnet restore
ignorują:
-
Przekierowania powiązań nie działają z elementami
<PackageReference>
i platforma .NET obsługuje<PackageReference>
tylko elementy pakietów NuGet. -
To ustawienie jest specyficzne dla programu Visual Studio i nie ma zastosowania do platformy .NET. Platforma .NET nie używa
packages.config
pliku i używa<PackageReference>
elementów dla pakietów NuGet. -
Dodano obsługę weryfikacji podpisu pakietu międzyplatformowego w zestawie SDK platformy .NET 5.0.100.
Pliki do pobrania 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
ROOT
Opcjonalna ścieżka do pliku projektu w celu przywrócenia.
Opcje
--configfile <FILE>
Plik konfiguracji NuGet (nuget.config) do użycia. Jeśli zostanie określony, zostaną użyte tylko ustawienia z tego pliku. Jeśli nie zostanie określona, zostanie użyta hierarchia plików konfiguracji z bieżącego katalogu. Aby uzyskać więcej informacji, zobacz Typowe konfiguracje NuGet.
--disable-parallel
Wyłącza przywracanie wielu projektów równolegle.
--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 .
--force-evaluate
Wymusza przywrócenie w celu ponownego oceny wszystkich zależności, nawet jeśli plik blokady już istnieje.
-?|-h|--help
Wyświetla opis sposobu używania polecenia.
--ignore-failed-sources
Ostrzegaj tylko o nieudanych źródłach, jeśli istnieją pakiety spełniające wymagania dotyczące wersji.
--interactive
Umożliwia zatrzymanie polecenia i oczekiwanie na wprowadzenie lub działanie użytkownika. Na przykład w celu ukończenia uwierzytelniania.
--lock-file-path <LOCK_FILE_PATH>
Lokalizacja wyjściowa, w której jest zapisywany plik blokady projektu. Domyślnie jest to PROJECT_ROOT\packages.lock.json.
--locked-mode
Nie zezwalaj na aktualizowanie pliku blokady projektu.
--no-cache
Określa, aby nie buforować żądań HTTP.
--no-dependencies
Podczas przywracania projektu przy użyciu odwołań typu project-to-project (P2P) przywraca projekt główny, a nie odwołania.
--packages <PACKAGES_DIRECTORY>
Określa katalog dla przywróconych pakietów.
-r|--runtime <RUNTIME_IDENTIFIER>
Określa środowisko uruchomieniowe przywracania pakietu. Służy to do przywracania pakietów dla środowisk uruchomieniowych, które nie są jawnie wymienione w tagu
<RuntimeIdentifiers>
w pliku csproj . Aby uzyskać listę identyfikatorów środowiska uruchomieniowego (RID), zobacz wykaz identyfikatorów RID.-s|--source <SOURCE>
Określa identyfikator URI źródła pakietu NuGet do użycia podczas operacji przywracania. To ustawienie zastępuje wszystkie źródła określone w plikachnuget.config . Wiele źródeł można udostępnić, określając tę opcję wiele razy.
--use-lock-file
Umożliwia wygenerowanie i użycie pliku blokady projektu z przywracaniem.
-v|--verbosity <LEVEL>
Ustawia poziom szczegółowości polecenia. Dozwolone wartości to
q[uiet]
, ,m[inimal]
,d[etailed]
n[ormal]
, idiag[nostic]
. Wartość domyślna tominimal
. Aby uzyskać więcej informacji, zobacz LoggerVerbosity.
Przykłady
Przywróć zależności i narzędzia dla projektu w bieżącym katalogu:
dotnet restore
Przywróć zależności i narzędzia dla
app1
projektu znalezionego w podanej ścieżce:dotnet restore ./projects/app1/app1.csproj
Przywróć zależności i narzędzia dla projektu w bieżącym katalogu przy użyciu ścieżki pliku podanej jako źródło:
dotnet restore -s c:\packages\mypackages
Przywróć zależności i narzędzia dla projektu w bieżącym katalogu przy użyciu dwóch ścieżek plików podanych jako źródła:
dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
Przywróć zależności i narzędzia dla projektu w bieżącym katalogu z wyświetlonymi szczegółowymi danymi wyjściowymi:
dotnet restore --verbosity detailed
Inspekcja luk w zabezpieczeniach
Począwszy od platformy .NET 8, możesz zdecydować się na inspekcję zabezpieczeń NuGet dla programu dotnet restore
. Ta inspekcja tworzy raport luk w zabezpieczeniach z nazwą pakietu, ważnością luki w zabezpieczeniach i linkiem do porad, aby uzyskać więcej szczegółów.
Aby wybrać inspekcję <NuGetAudit>
zabezpieczeń, ustaw właściwość MSBuild na true
w pliku projektu. Ponadto, aby pobrać znany zestaw danych luk w zabezpieczeniach, upewnij się, że masz NuGet.org centralny rejestr zdefiniowany jako jedno ze źródeł pakietów:
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
Można skonfigurować poziom, na którym inspekcja zakończy się niepowodzeniem, ustawiając <NuGetAuditLevel>
właściwość MSBuild. Możliwe wartości to low
, moderate
, high
i critical
. Jeśli na przykład chcesz wyświetlić tylko klasyfikatora umiarkowane, wysokie i krytyczne, możesz ustawić właściwość na moderate
.