A NuGet-szolgáltató és a NuGet.exe

NuGet.exe nem szerepel a legújabb NuGet-szolgáltatóban. Egy modul vagy szkript közzétételi műveleteihez a PowerShellGet megköveteli a bináris végrehajtható NuGet.exe. Csak a NuGet-szolgáltatóra van szükség minden más művelethez, beleértve a kereséshez, telepítéshez, mentéshez és eltávolításhoz. A PowerShellGet olyan logikát tartalmaz, amely a NuGet-szolgáltató és a NuGet.exe kombinált rendszerindítását, vagy csak a NuGet-szolgáltató rendszerindítását kezeli. Mindkét esetben csak egyetlen üzenet jelenhet meg. Ha a számítógép nincs internetkapcsolattal, a felhasználónak vagy a rendszergazdának át kell másolnia a NuGet-szolgáltató és/vagy a NuGet.exe fájl megbízható példányát a leválasztott gépre.

Megjegyzés

A 6-os verziótól kezdődően a NuGet-szolgáltató szerepel a PowerShell telepítésében.

Hiba elhárítása, ha a NuGet-szolgáltató nincs telepítve internetkapcsolattal rendelkező gépen

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

Hiba elhárítása, ha a NuGet-szolgáltató elérhető, és NuGet.exe nem érhető el az internetkapcsolattal rendelkező gépen végzett közzétételi művelet során

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.

Hiba elhárítása, ha mind a NuGet-szolgáltató, mind a NuGet.exe nem érhető el az internetkapcsolattal rendelkező gépen végzett közzétételi művelet során

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.

A NuGet-szolgáltató manuális indítása az internethez nem csatlakozó gépen

A fent bemutatott folyamatok feltételezik, hogy a gép csatlakozik az internethez, és nyilvános helyről tölthet le fájlokat. Ha ez nem lehetséges, az egyetlen lehetőség a gép rendszerindítása a fent megadott folyamatokkal, és a szolgáltató manuális másolása az elkülönített csomópontra egy offline megbízható folyamaton keresztül. Ebben a forgatókönyvben a leggyakoribb használati eset az, amikor egy privát katalógus áll rendelkezésre egy elkülönített környezet támogatásához.

Miután követte a fenti folyamatot egy internetkapcsolattal rendelkező gép rendszerindításához, a szolgáltatói fájlokat megtalálja a helyen:

C:\Program Files\PackageManagement\ProviderAssemblies\

A NuGet-szolgáltató mappa-/fájlszerkezete (esetleg eltérő verziószámmal):

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

Másolja ezeket a mappákat és fájlokat megbízható folyamattal az offline gépekre. A szolgáltató offline gépen való használatához importálni kell. Futtassa a következő parancsot az offline gépen:

Import-PackageProvider -Name NuGet

Manuális rendszerindítási NuGet.exe az internethez nem csatlakozó gépek közzétételi műveleteinek támogatásához

A NuGet-szolgáltató manuális rendszerindításának folyamata mellett, ha a gépet modulok vagy szkriptek privát katalógusban való közzétételére fogja használni a Publish-Module vagy Publish-Script parancsmagok használatával, a NuGet.exe bináris végrehajtható fájlra lesz szükség.

Ebben a forgatókönyvben a leggyakoribb használati eset az, amikor egy privát katalógus áll rendelkezésre egy elkülönített környezet támogatásához. A NuGet.exe fájl kétféleképpen szerezhető be.

Az egyik lehetőség egy internetkapcsolattal rendelkező gép rendszerindítása, és a fájlok offline gépekre másolása megbízható folyamattal. Az internetkapcsolattal rendelkező gép rendszerindítása után a NuGet.exe bináris fájl a következő két mappa egyikében található:

  • Ha a vagy Publish-Script parancsmagok Publish-Module emelt szintű engedélyekkel lettek végrehajtva (rendszergazdaként):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Ha a parancsmagok rendszergazdai jogosultságokkal nem rendelkező felhasználóként lettek végrehajtva:

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

Egy másik lehetőség az NuGet.exe letöltése a NuGet.Org webhelyről: https://dist.nuget.org/index.html Éles gépek NugGet-verziójának kiválasztásakor győződjön meg arról, hogy az 2.8.5.208-nál későbbi, és azonosítsa a "javasolt" címkével ellátott verziót. Ne felejtse el feloldani a fájl letiltását, ha böngészővel lett letöltve. Ez a Unblock-File parancsmaggal nyitható meg.

Mindkét esetben a NuGet.exe fájl bármely helyére $env:PATHmásolható, de a szokásos helyek a következők:

  • A végrehajtható fájl elérhetővé tétele, hogy az összes felhasználó használhassa és Publish-Script parancsmagokat használhassaPublish-Module:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Ha a végrehajtható fájlt csak egy adott felhasználó számára szeretné elérhetővé tenni, másolja a fájlt arra a helyre, amely csak az adott felhasználó profilján belül található:

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