Delen via


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:

U kunt de nuget.config-feeds overschrijven met de -s optie.

Zie Pakketten van geverifieerde feeds gebruiken vanuit geverifieerde feeds voor meer informatie over het gebruik van geverifieerde feeds.

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:

  • bindingRedirects

    Bindingsomleidingen werken niet met <PackageReference> elementen en .NET ondersteunt <PackageReference> alleen elementen voor NuGet-pakketten.

  • oplossing

    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.

  • trustedSigners

    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 op win-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 draagbaar RuntimeIdentifier is op basis van een van uw computer. Dit gebeurt impliciet met eigenschappen waarvoor een RuntimeIdentifier, zoals SelfContained, PublishAot, PublishSelfContained, , en PublishSingleFilePublishReadyToRun. 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 zijnq[uiet], , , n[ormal]en diag[nostic]d[etailed]m[inimal]. De standaardwaarde is minimal. 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 highcritical. 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.