Sdílet prostřednictvím


Spuštění poskytovatele NuGet a NuGet.exe

NuGet.exe není součástí nejnovějšího poskytovatele NuGet. Pro operace publikování modulu nebo skriptu vyžaduje Modul PowerShellGet binární spustitelný soubor NuGet.exe. Pro všechny ostatní operace, včetně vyhledání, instalace, uložení a odinstalace, se vyžaduje pouze poskytovatel NuGet. Modul PowerShellGet obsahuje logiku pro zpracování kombinované metody bootstrap zprostředkovatele NuGet a NuGet.exe, nebo pro spuštění pouze zprostředkovatele NuGet. V obou případech by se měla zobrazit pouze jedna výzva. Pokud počítač není připojený k internetu, musí uživatel nebo správce zkopírovat důvěryhodnou instanci poskytovatele NuGet a/nebo soubor NuGet.exe do odpojeného počítače.

Poznámka

Od verze 6 je zprostředkovatel NuGet součástí instalace PowerShellu.

Řešení chyby v případě, že poskytovatel NuGet není nainstalovaný na počítači, který je připojený k internetu

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

Řešení chyby v případě, že je zprostředkovatel NuGet dostupný a NuGet.exe není během operace publikování k dispozici na počítači připojeném k internetu

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.

Řešení chyby, když zprostředkovatel NuGet i NuGet.exe nejsou během operace publikování na počítači připojeném k internetu k dispozici

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.

Ruční spuštění poskytovatele NuGetu na počítači, který není připojený k internetu

Výše uvedené procesy předpokládají, že je počítač připojený k internetu a může stahovat soubory z veřejného umístění. Pokud to není možné, jedinou možností je spustit počítač pomocí výše uvedených procesů a ručně zkopírovat poskytovatele do izolovaného uzlu prostřednictvím offline důvěryhodného procesu. Nejběžnějším případem použití pro tento scénář je, když je k dispozici privátní galerie pro podporu izolovaného prostředí.

Po provedení výše uvedeného postupu spuštění počítače připojeného k internetu najdete soubory zprostředkovatele v umístění :

C:\Program Files\PackageManagement\ProviderAssemblies\

Struktura složek nebo souborů zprostředkovatele NuGet bude (pravděpodobně s jiným číslem verze):

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

Zkopírujte tyto složky a soubory pomocí důvěryhodného procesu do počítačů offline. Pokud chcete zprostředkovatele použít na offline počítači, musíte ho importovat. Na offline počítači spusťte následující příkaz:

Import-PackageProvider -Name NuGet

Ruční spouštění NuGet.exe pro podporu operací publikování na počítači, který není připojený k internetu

Kromě procesu ručního spuštění zprostředkovatele NuGet, pokud se počítač použije k publikování modulů nebo skriptů do privátní galerie pomocí Publish-Module rutin nebo Publish-Script , bude se vyžadovat NuGet.exe binární spustitelný soubor.

Nejběžnějším případem použití pro tento scénář je, když je k dispozici privátní galerie pro podporu izolovaného prostředí. Soubor NuGet.exe můžete získat dvěma způsoby.

Jednou z možností je spustit počítač, který je připojený k internetu, a zkopírovat soubory do offline počítačů pomocí důvěryhodného procesu. Po spuštění počítače připojeného k internetu bude binární soubor NuGet.exe umístěn v jedné ze dvou složek:

  • Pokud se Publish-Module rutiny nebo Publish-Script spustily se zvýšenými oprávněními (jako správce):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Pokud se rutiny spustily jako uživatel bez zvýšených oprávnění:

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

Druhou možností je stáhnout NuGet.exe z NuGet.Org webu: https://dist.nuget.org/index.html Při výběru verze NugGet pro produkční počítače se ujistěte, že je novější než 2.8.5.208, a určete verzi, která je označená jako doporučená. Pokud jste soubor stáhli pomocí prohlížeče, nezapomeňte ho odblokovat. Můžete to provést pomocí rutiny Unblock-File .

V obou případech je možné soubor NuGet.exe zkopírovat do libovolného umístění v $env:PATHsouboru , ale standardní umístění jsou:

  • Zpřístupnění spustitelného souboru, aby všichni uživatelé mohli používat Publish-Module rutiny a Publish-Script :

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Pokud chcete spustitelný soubor zpřístupnit jenom konkrétnímu uživateli, zkopírujte ho do umístění pouze v rámci jeho profilu:

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