Bootstrap för NuGet-providern och NuGet.exe

NuGet.exe ingår inte i den senaste NuGet-providern. För publiceringsåtgärder för antingen en modul eller ett skript kräver PowerShellGet den binära körbara NuGet.exe. Endast NuGet-providern krävs för alla andra åtgärder, inklusive att hitta, installera, spara och avinstallera. PowerShellGet innehåller logik för att hantera antingen en kombinerad bootstrap för NuGet-providern och NuGet.exe, eller bootstrap för endast NuGet-providern. I båda fallen bör endast ett enda meddelande visas. Om datorn inte är ansluten till Internet måste användaren eller administratören kopiera en betrodd instans av NuGet-providern och/eller den NuGet.exe filen till den frånkopplade datorn.

Anteckning

Från och med version 6 ingår NuGet-providern i installationen av PowerShell.

Lösa fel när NuGet-providern inte har installerats på en dator som är Internetansluten

Find-Module -Repository PSGallery -Verbose -Name Contoso
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based
repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\user1\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet
provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you
want PowerShellGet to install and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): n
Find-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure
that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Find-Module -Repository PSGallery -Verbose -Name Contoso
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Find-Module], InvalidOperationException
   + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Find-Module
Find-Module -Repository PSGallery -Verbose -Name Contoso
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based
repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\user1\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet
provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you
want PowerShellGet to install and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet provider.

Version    Name                                Type       Repository           Description
-------    ----                                ----       ----------           -----------
2.5        Contoso                             Module     PSGallery        Contoso module

Lösa fel när NuGet-providern är tillgänglig och NuGet.exe inte är tillgänglig under publiceringsåtgärden på en dator som är Internetansluten

Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe is required to continue
PowerShellGet requires NuGet.exe to publish an item to the NuGet-based repositories. NuGet.exe must
be available under one of the paths specified in PATH environment variable value. Do you want
PowerShellGet to install NuGet.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): N
Publish-Module : NuGet.exe is required to interact with NuGet-based repositories. Please ensure
that NuGet.exe is available under one of the paths specified in PATH environment variable value.
At line:1 char:1
+ Publish-Module -Name Contoso -Repository PSGallery -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Publish-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetExe,Publish-Module
Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe is required to continue
PowerShellGet requires NuGet.exe to publish an item to the NuGet-based repositories. NuGet.exe must
be available under one of the paths specified in PATH environment variable value. Do you want
PowerShellGet to install NuGet.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet.exe.
VERBOSE: Successfully published module 'Contoso' to the module publish location 'https://www.powershellgallery.com/api/v2/'.
Please allow few minutes for 'Contoso' to show up in the search results.

Lösa fel när både NuGet-providern och NuGet.exe inte är tillgängliga under publiceringsåtgärden på en dator som är Internetansluten

Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe and NuGet provider are required to continue
PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer to interact with
the NuGet-based repositories. Do you want PowerShellGet to install both NuGet.exe and NuGet provider
now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): N
Publish-Module : PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer
to interact with the NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of
NuGet provider is installed and NuGet.exe is available under one of the paths specified in PATH
environment variable value.
At line:1 char:1
+ Publish-Module -Name Contoso -Repository PSGallery -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Publish-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetBinaries,Publish-Module
Publish-Module -Name Contoso -Repository PSGallery -Verbose
NuGet.exe and NuGet provider are required to continue
PowerShellGet requires NuGet.exe and NuGet provider version '2.8.5.201' or newer to interact with
the NuGet-based repositories. Do you want PowerShellGet to install both NuGet.exe and NuGet provider
now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
VERBOSE: Installing NuGet provider.
VERBOSE: Installing NuGet.exe.
VERBOSE: Successfully published module 'Contoso' to the module publish location 'https://www.powershellgallery.com/api/v2/'.
 Please allow few minutes for 'Contoso' to show up in the search results.

Starta NuGet-providern manuellt på en dator som inte är ansluten till Internet

De processer som visas ovan förutsätter att datorn är ansluten till Internet och kan ladda ned filer från en offentlig plats. Om det inte är möjligt är det enda alternativet att starta en dator med hjälp av de processer som anges ovan och manuellt kopiera providern till den isolerade noden via en betrodd offlineprocess. Det vanligaste användningsfallet för det här scenariot är när ett privat galleri är tillgängligt för att stödja en isolerad miljö.

När du har följt processen ovan för att starta en Internetansluten dator hittar du providerfiler på platsen:

C:\Program Files\PackageManagement\ProviderAssemblies\

NuGet-providerns mapp-/filstruktur är (eventuellt med ett annat versionsnummer):

NuGet
--2.8.5.208
----Microsoft.PackageManagement.NuGetProvider.dll

Kopiera dessa mappar och filer med hjälp av en betrodd process till offlinedatorerna. Om du vill använda providern på offlinedatorn måste den importeras. Kör följande kommando på offlinedatorn:

Import-PackageProvider -Name NuGet

Starta NuGet.exe manuellt för att stödja publiceringsåtgärder på en dator som inte är ansluten till Internet

Förutom processen för att manuellt starta NuGet-providern krävs NuGet.exe binär körbar fil om datorn ska användas för att publicera moduler eller skript till ett privat galleri med hjälp av Publish-Module cmdletarna eller Publish-Script .

Det vanligaste användningsfallet för det här scenariot är när ett privat galleri är tillgängligt för att stödja en isolerad miljö. Det finns två alternativ för att hämta NuGet.exe-filen.

Ett alternativ är att starta en dator som är Internetansluten och kopiera filerna till offlinedatorerna med hjälp av en betrodd process. Efter start av den Internetanslutna datorn finns NuGet.exe binärfilen i någon av två mappar:

  • Publish-Module Om cmdletarna eller Publish-Script kördes med förhöjd behörighet (som administratör):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Om cmdletarna kördes som en användare utan utökade behörigheter:

    $HOME\AppData\Local\Microsoft\Windows\PowerShell\PowerShellGet\
    

Ett annat alternativ är att ladda ned NuGet.exe från NuGet.Org webbplats: https://dist.nuget.org/index.html När du väljer en NugGet-version för produktionsdatorer kontrollerar du att den är senare än 2.8.5.208 och identifierar den version som har märkts som "rekommenderad". Kom ihåg att avblockera filen om den laddades ned med hjälp av en webbläsare. Detta kan utföras med hjälp av cmdleten Unblock-File .

I båda fallen kan NuGet.exe-filen kopieras till valfri plats i $env:PATH, men standardplatserna är:

  • Så här gör du den körbara filen tillgänglig så att alla användare kan använda Publish-Module och Publish-Script cmdletar:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Om du bara vill göra den körbara filen tillgänglig för en viss användare kopierar du endast till platsen i användarens profil:

    $HOME\AppData\Local\Microsoft\Windows\PowerShell\PowerShellGet\