dotnet herstellen
Dit artikel is van toepassing op: ✔️ .NET Core 3.1 SDK en latere versies
Naam
dotnet restore
- Herstelt de afhankelijkheden en hulpprogramma's van een project.
Samenvatting
dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
[--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>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[--use-lock-file] [-v|--verbosity <LEVEL>]
dotnet restore -h|--help
Beschrijving
Een .NET-project verwijst doorgaans naar externe bibliotheken in NuGet-pakketten die extra functionaliteit bieden. Naar deze externe afhankelijkheden wordt verwezen in het projectbestand (.csproj of .vbproj). Wanneer u de dotnet restore
opdracht uitvoert, gebruikt de .NET CLI NuGet om naar deze afhankelijkheden te zoeken en deze indien nodig te downloaden. Het zorgt er ook voor dat alle afhankelijkheden die door het project zijn vereist, compatibel zijn met elkaar en dat er geen conflicten zijn tussen deze afhankelijkheden. Zodra de opdracht is voltooid, zijn alle afhankelijkheden die voor het project zijn vereist, beschikbaar in een lokale cache en kunnen ze worden gebruikt door de .NET CLI om de toepassing te bouwen en uit te voeren.
In de meeste gevallen hoeft u de dotnet restore
opdracht niet expliciet te gebruiken, omdat als een NuGet-herstelbewerking nodig is, de volgende opdrachten impliciet worden uitgevoerd:
Soms kan het lastig zijn om de impliciete NuGet-herstelbewerking uit te voeren met deze opdrachten. Sommige geautomatiseerde systemen, zoals buildsystemen, moeten bijvoorbeeld expliciet worden aangeroepen dotnet restore
om te bepalen wanneer het herstel plaatsvindt, zodat ze het netwerkgebruik kunnen beheren. Als u impliciete NuGet-herstel wilt voorkomen, kunt u de --no-restore
vlag gebruiken met een van deze opdrachten.
Notitie
Verificatie van ondertekende pakketten tijdens herstelbewerkingen vereist een certificaathoofdarchief dat geldig is voor ondertekening van code en tijdstempel. Zie NuGet-ondertekende pakketverificatie voor meer informatie.
Feeds opgeven
Om de afhankelijkheden te herstellen, heeft NuGet de feeds nodig waar de pakketten zich bevinden. Feeds worden meestal verstrekt via het configuratiebestand nuget.config . Er wordt een standaardconfiguratiebestand opgegeven wanneer de .NET SDK is geïnstalleerd. Ga op een van de volgende manieren te werk om extra feeds op te geven:
- Maak uw eigen nuget.config-bestand in de projectmap. Zie Algemene NuGet-configuraties en nuget.config-verschillen verderop in dit artikel voor meer informatie.
- Gebruik
dotnet nuget
opdrachten zoalsdotnet nuget add source
.
U kunt de nuget.config-feeds overschrijven met de -s
optie.
Globale map met pakketten
Voor afhankelijkheden kunt u opgeven waar de herstelde pakketten worden geplaatst tijdens de herstelbewerking met behulp van het --packages
argument. Als dit niet is opgegeven, wordt de standaard NuGet-pakketcache gebruikt. Deze vindt u in de .nuget/packages
map in de basismap van de gebruiker op alle besturingssystemen. Bijvoorbeeld /home/user1 in Linux of C:\Users\user1 in Windows.
Projectspecifieke hulpprogramma's
Voor projectspecifieke hulpprogramma's dotnet restore
herstelt u eerst het pakket waarin het hulpprogramma is verpakt en gaat u vervolgens verder met het herstellen van de afhankelijkheden van het hulpprogramma, zoals opgegeven in het projectbestand.
verschillen in nuget.config
Het gedrag van de dotnet restore
opdracht wordt beïnvloed door de instellingen in het nuget.config-bestand , indien aanwezig. Als u bijvoorbeeld nuget.config globalPackagesFolder
instelt, worden de herstelde NuGet-pakketten in de opgegeven map geplaatst. Dit is een alternatief voor het opgeven van de --packages
optie in de dotnet restore
opdracht. Zie de verwijzing nuget.config voor meer informatie.
Er zijn drie specifieke instellingen die dotnet restore
worden genegeerd:
-
Bindingsomleidingen werken niet met
<PackageReference>
elementen en .NET ondersteunt<PackageReference>
alleen elementen voor NuGet-pakketten. -
Deze instelling is specifiek voor Visual Studio en is niet van toepassing op .NET. .NET gebruikt
packages.config
geen bestand en maakt in plaats daarvan gebruik van<PackageReference>
elementen voor NuGet-pakketten. -
Ondersteuning voor verificatie van platformoverschrijdende pakkethandtekening is toegevoegd in de .NET 5.0.100 SDK.
Downloads van workloadmanifesten
Wanneer u deze opdracht uitvoert, wordt er een asynchrone achtergronddownload van reclamemanifesten voor workloads gestart. Als het downloaden nog steeds wordt uitgevoerd wanneer deze opdracht is voltooid, wordt het downloaden gestopt. Zie Reclamemanifesten voor meer informatie.
Argumenten
ROOT
Optioneel pad naar het projectbestand dat u wilt herstellen.
Opties
-a|--arch <ARCHITECTURE>
Hiermee geeft u de doelarchitectuur. Dit is een verkorte syntaxis voor het instellen van de Runtime-id (RID), waarbij de opgegeven waarde wordt gecombineerd met de standaard-RID. Als u bijvoorbeeld op een
win-x64
computer opgeeft--arch x86
, wordt de RID ingesteld opwin-x86
. Als u deze optie gebruikt, gebruikt u de-r|--runtime
optie niet. Beschikbaar sinds .NET 6 Preview 7.
--configfile <FILE>
Het NuGet-configuratiebestand (nuget.config) dat moet worden gebruikt. Indien opgegeven, worden alleen de instellingen uit dit bestand gebruikt. Als dit niet is opgegeven, wordt de hiërarchie van configuratiebestanden uit de huidige map gebruikt. Zie Algemene NuGet-configuraties voor meer informatie.
--disable-build-servers
Hiermee wordt de opdracht gedwongen om permanente buildservers te negeren. Deze optie biedt een consistente manier om al het gebruik van buildcaching uit te schakelen, waardoor een volledig nieuwe build wordt afgemaakt. Een build die niet afhankelijk is van caches is handig wanneer de caches om een of andere reden beschadigd of onjuist zijn. Beschikbaar sinds .NET 7 SDK.
--disable-parallel
Hiermee schakelt u het herstellen van meerdere projecten parallel uit.
--force
Hiermee worden alle afhankelijkheden gedwongen om te worden opgelost, zelfs als de laatste herstelbewerking is geslaagd. Het opgeven van deze vlag is hetzelfde als het verwijderen van het project.assets.json bestand.
--force-evaluate
Hiermee worden alle afhankelijkheden opnieuw geëvalueerd, zelfs als er al een vergrendelingsbestand bestaat.
-?|-h|--help
Hiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.
--ignore-failed-sources
Waarschuw alleen voor mislukte bronnen als er pakketten zijn die voldoen aan de versievereiste.
--interactive
Hiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien.
--lock-file-path <LOCK_FILE_PATH>
Uitvoerlocatie waar het projectvergrendelingsbestand wordt geschreven. Dit is standaard PROJECT_ROOT\packages.lock.json.
--locked-mode
Sta het bijwerken van het projectvergrendelingsbestand niet toe.
--no-cache
Hiermee geeft u op dat HTTP-aanvragen niet in de cache moeten worden opgeslagen.
--no-dependencies
Wanneer u een project herstelt met P2P-verwijzingen (project-to-project), herstelt u het hoofdproject en niet de verwijzingen.
--packages <PACKAGES_DIRECTORY>
Hiermee geeft u de map voor herstelde pakketten.
-r|--runtime <RUNTIME_IDENTIFIER>
Hiermee geeft u een runtime voor het herstellen van het pakket. Dit wordt gebruikt om pakketten te herstellen voor runtimes die niet expliciet worden vermeld in de
<RuntimeIdentifiers>
tag in het .csproj-bestand . Zie de RID-catalogus voor een lijst met runtime-id's (RID's).-s|--source <SOURCE>
Hiermee geeft u de URI van de NuGet-pakketbron die moet worden gebruikt tijdens de herstelbewerking. Deze instelling overschrijft alle bronnen die zijn opgegeven in de nuget.config-bestanden . U kunt meerdere bronnen opgeven door deze optie meerdere keren op te geven.
--tl:[auto|on|off]
Hiermee geeft u op of de terminallogger moet worden gebruikt voor de build-uitvoer. De standaardwaarde is
auto
, waarmee eerst de omgeving wordt geverifieerd voordat u terminallogboekregistratie inschakelt. De omgevingscontrole controleert of de terminal in staat is moderne uitvoerfuncties te gebruiken en geen omgeleide standaarduitvoer gebruikt voordat de nieuwe logger wordt ingeschakeld.on
slaat de omgevingscontrole over en schakelt terminallogboekregistratie in.off
slaat de omgevingscontrole over en maakt gebruik van de standaardconsolelogger.De terminallogger toont u de herstelfase, gevolgd door de buildfase. Tijdens elke fase worden de huidige bouwprojecten onderaan de terminal weergegeven. Elk project dat wordt gebouwd, levert zowel het MSBuild-doel dat momenteel wordt gebouwd als de hoeveelheid tijd die aan dat doel is besteed. U kunt deze informatie doorzoeken voor meer informatie over de build. Wanneer een project klaar is met bouwen, wordt één sectie 'build completed' geschreven die het volgende vastlegt:
- De naam van het gebouwde project.
- Het doelframework (indien multi-targeted).
- De status van die build.
- De primaire uitvoer van die build (die is hyperlinked).
- Diagnostische gegevens die voor dat project worden gegenereerd.
Deze optie is beschikbaar vanaf .NET 8.
--use-current-runtime, --ucr [true|false]
Hiermee stelt u het
RuntimeIdentifier
in op een platform dat draagbaarRuntimeIdentifier
is op basis van een van uw computer. Dit gebeurt impliciet met eigenschappen waarvoor eenRuntimeIdentifier
, zoalsSelfContained
,PublishAot
,PublishSelfContained
, , enPublishSingleFile
PublishReadyToRun
. Als de eigenschap is ingesteld op onwaar, vindt die impliciete resolutie niet meer plaats.--use-lock-file
Hiermee kan een projectvergrendelingsbestand worden gegenereerd en gebruikt met herstel.
-v|--verbosity <LEVEL>
Hiermee stelt u het uitgebreidheidsniveau van de opdracht in. Toegestane waarden zijn
q[uiet]
, , ,n[ormal]
endiag[nostic]
d[etailed]
m[inimal]
. De standaardwaarde isminimal
. Zie LoggerVerbosity voor meer informatie.
Voorbeelden
Afhankelijkheden en hulpprogramma's voor het project herstellen in de huidige map:
dotnet restore
Herstel afhankelijkheden en hulpprogramma's voor het
app1
project dat in het opgegeven pad is gevonden:dotnet restore ./projects/app1/app1.csproj
Herstel de afhankelijkheden en hulpprogramma's voor het project in de huidige map met behulp van het bestandspad dat is opgegeven als bron:
dotnet restore -s c:\packages\mypackages
Herstel de afhankelijkheden en hulpprogramma's voor het project in de huidige map met behulp van de twee bestandspaden die zijn opgegeven als bronnen:
dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
Herstel afhankelijkheden en hulpprogramma's voor het project in de huidige map met gedetailleerde uitvoer:
dotnet restore --verbosity detailed
Controleren op beveiligingsproblemen
Vanaf .NET 8 omvat dotnet restore
nuGet-beveiligingscontrole. Deze controle produceert een rapport van beveiligingsproblemen met de naam van het getroffen pakket, de ernst van het beveiligingsprobleem en een koppeling naar het advies voor meer informatie.
Als u zich wilt afmelden voor de beveiligingscontrole, stelt u de <NuGetAudit>
eigenschap false
MSBuild in op in uw projectbestand.
Als u de bekende gegevensset voor beveiligingsproblemen wilt ophalen, moet u ervoor zorgen dat u het NuGet.org centraal register hebt gedefinieerd als een van uw pakketbronnen:
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
U kunt het niveau configureren waarop controle mislukt door de <NuGetAuditLevel>
eigenschap MSBuild in te stellen. Mogelijke waarden zijnlow
, moderate
, en high
critical
. Als u bijvoorbeeld alleen gemiddelde, hoge en kritieke adviezen wilt zien, kunt u de eigenschap instellen op moderate
.
Vanaf .NET 9 controleert NuGet standaard zowel directe als transitieve pakketverwijzingen. In .NET 8 worden alleen directe pakketverwijzingen gecontroleerd. U kunt de modus wijzigen door de <NuGetAuditMode>
eigenschap MSBuild in te stellen op direct
of all
.
Zie Controlepakketafhankelijkheden voor beveiligingsproblemen voor meer informatie.