Bootstrap penyedia dan NuGet.exe NuGet

NuGet.exe tidak termasuk dalam penyedia NuGet terbaru. Untuk operasi penerbitan modul atau skrip, PowerShellGet memerlukan NuGet.exebiner yang dapat dieksekusi . Hanya penyedia NuGet yang diperlukan untuk semua operasi lainnya, termasuk menemukan, menginstal, menyimpan, dan menghapus instalasi. PowerShellGet menyertakan logika untuk menangani bootstrap gabungan penyedia NuGet dan NuGet.exe, atau bootstrap hanya dari penyedia NuGet. Dalam kedua kasus, hanya satu pesan perintah yang harus terjadi. Jika komputer tidak tersambung ke Internet, pengguna atau administrator harus menyalin instans tepercaya penyedia NuGet dan/atau file NuGet.exe ke komputer yang terputus.

Catatan

Dimulai dengan versi 6, penyedia NuGet disertakan dalam penginstalan PowerShell.

Mengatasi kesalahan ketika penyedia NuGet belum diinstal pada komputer yang tersambung ke Internet

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

Mengatasi kesalahan ketika penyedia NuGet tersedia dan NuGet.exe tidak tersedia selama operasi penerbitan pada komputer yang terhubung ke Internet

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.

Mengatasi kesalahan ketika penyedia NuGet dan NuGet.exe tidak tersedia selama operasi penerbitan pada komputer yang terhubung ke Internet

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.

Bootstrap penyedia NuGet secara manual pada komputer yang tidak tersambung ke Internet

Proses yang ditunjukkan di atas mengasumsikan mesin terhubung ke Internet dan dapat mengunduh file dari lokasi publik. Jika itu tidak memungkinkan, satu-satunya opsi adalah bootstrap komputer menggunakan proses yang diberikan di atas, dan menyalin penyedia secara manual ke simpul yang terisolasi melalui proses tepercaya offline. Kasus penggunaan yang paling umum untuk skenario ini adalah ketika galeri privat tersedia untuk mendukung lingkungan yang terisolasi.

Setelah mengikuti proses di atas untuk bootstrap komputer yang terhubung ke Internet, Anda akan menemukan file penyedia di lokasi:

C:\Program Files\PackageManagement\ProviderAssemblies\

Struktur folder/file penyedia NuGet akan (mungkin dengan nomor versi yang berbeda):

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

Salin folder dan file ini menggunakan proses tepercaya ke komputer offline. Untuk menggunakan penyedia pada komputer offline, penyedia harus diimpor. Jalankan perintah berikut pada komputer offline:

Import-PackageProvider -Name NuGet

Bootstrapping secara manual NuGet.exe untuk mendukung operasi penerbitan pada komputer yang tidak tersambung ke Internet

Selain proses untuk bootstrap penyedia NuGet secara manual, jika komputer akan digunakan untuk menerbitkan modul atau skrip ke galeri privat menggunakan Publish-Module cmdlet atau Publish-Script , file NuGet.exe biner yang dapat dieksekusi akan diperlukan.

Kasus penggunaan yang paling umum untuk skenario ini adalah ketika galeri privat tersedia untuk mendukung lingkungan yang terisolasi. Ada dua opsi untuk mendapatkan file NuGet.exe.

Salah satu opsinya adalah bootstrap komputer yang terhubung ke Internet dan menyalin file ke komputer offline menggunakan proses tepercaya. Setelah bootstrapping komputer yang terhubung ke Internet, biner NuGet.exe akan terletak di salah satu dari dua folder:

  • Publish-Module Jika cmdlet atau Publish-Script dijalankan dengan izin yang ditinggikan (Sebagai Administrator):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Jika cmdlet dijalankan sebagai pengguna tanpa izin yang ditingkatkan:

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

Opsi kedua adalah mengunduh NuGet.exe dari situs web NuGet.Org: https://dist.nuget.org/index.html Saat memilih versi NugGet untuk mesin produksi, pastikan versi tersebut lebih baru dari 2.8.5.208, dan identifikasi versi yang telah diberi label "direkomendasikan". Ingatlah untuk membuka blokir file jika diunduh menggunakan browser. Ini dapat dilakukan dengan menggunakan Unblock-File cmdlet .

Dalam kedua kasus, file NuGet.exe dapat disalin ke lokasi mana pun di $env:PATH, tetapi lokasi standarnya adalah:

  • Untuk membuat executable tersedia sehingga semua pengguna dapat menggunakan Publish-Module dan Publish-Script cmdlet:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Untuk membuat executable hanya tersedia untuk pengguna tertentu, salin ke lokasi hanya dalam profil pengguna tersebut:

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