NuGet sağlayıcısını ve NuGet.exe bootstrap

NuGet.exe en son NuGet sağlayıcısına dahil değildir. Bir modülün veya betiğin yayımlama işlemleri için PowerShellGet için ikili yürütülebilir dosyaNuGet.exegerekir. Bulma, yükleme, kaydetme ve kaldırma gibi diğer tüm işlemler için yalnızca NuGet sağlayıcısı gereklidir. PowerShellGet, NuGet sağlayıcısının birleştirilmiş önyüklemesini ve NuGet.exe ya da yalnızca NuGet sağlayıcısının önyüklemesini işlemek için mantık içerir. Her iki durumda da yalnızca tek bir istem iletisi gerçekleşmelidir. Makine İnternet'e bağlı değilse, kullanıcı veya yöneticinin NuGet sağlayıcısının güvenilir bir örneğini ve/veya NuGet.exe dosyasını bağlantısı kesilmiş makineye kopyalaması gerekir.

Not

Sürüm 6'dan itibaren NuGet sağlayıcısı PowerShell yüklemesine dahil edilir.

NuGet sağlayıcısı İnternet'e bağlı bir makineye yüklenmediğinde oluşan hatayı çözme

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

NuGet sağlayıcısı kullanılabilir olduğunda ve İnternet'e bağlı bir makinede yayımlama işlemi sırasında NuGet.exe kullanılamadığında oluşan hatayı çözme

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.

İnternet'e bağlı bir makinede yayımlama işlemi sırasında hem NuGet sağlayıcısı hem de NuGet.exe kullanılamadığında oluşan hatayı çözme

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.

İnternet'e bağlı olmayan bir makinede NuGet sağlayıcısını el ile önyükleme

Yukarıda belirtilen işlemlerde makinenin İnternet'e bağlı olduğu ve ortak bir konumdan dosya indirebildiği varsayılır. Bu mümkün değilse, tek seçenek yukarıda verilen işlemleri kullanarak bir makineyi önyüklemek ve sağlayıcıyı çevrimdışı güvenilir bir işlem aracılığıyla yalıtılmış düğüme el ile kopyalamaktır. Bu senaryo için en yaygın kullanım örneği, yalıtılmış bir ortamı desteklemek için özel bir galerinin kullanılabilir olmasıdır.

İnternet'e bağlı bir makineyi önyüklemek için yukarıdaki işlemi izledikten sonra sağlayıcı dosyalarını konumunda bulabilirsiniz:

C:\Program Files\PackageManagement\ProviderAssemblies\

NuGet sağlayıcısının klasör/dosya yapısı olacaktır (muhtemelen farklı bir sürüm numarasıyla):

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

Bu klasörleri ve dosyayı güvenilir bir işlem kullanarak çevrimdışı makinelere kopyalayın. Sağlayıcıyı çevrimdışı makinede kullanmak için içeri aktarılmalıdır. Çevrimdışı makinede aşağıdaki komutu çalıştırın:

Import-PackageProvider -Name NuGet

İnternet'e bağlı olmayan bir makinede yayımlama işlemlerini desteklemek için el ile önyükleme NuGet.exe

NuGet sağlayıcısını el ile önyükleme işlemine ek olarak, makine veya Publish-Script cmdlet'lerini kullanarak Publish-Module modülleri veya betikleri özel bir galeride yayımlamak için kullanılacaksa, NuGet.exe ikili yürütülebilir dosyası gerekir.

Bu senaryo için en yaygın kullanım örneği, yalıtılmış bir ortamı desteklemek için özel bir galerinin kullanılabilir olmasıdır. NuGet.exe dosyasını almak için iki seçenek vardır.

Seçeneklerden biri, İnternet'e bağlı bir makineyi önyüklemek ve güvenilen bir işlem kullanarak dosyaları çevrimdışı makinelere kopyalamaktır. İnternet'e bağlı makineye önyükleme yaptıktan sonra, NuGet.exe ikili dosyası iki klasörden birinde bulunur:

  • Publish-Module veya Publish-Script cmdlet'leri yükseltilmiş izinlerle yürütüldüyse (Yönetici olarak):

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Cmdlet'ler yükseltilmiş izinlere sahip olmayan bir kullanıcı olarak yürütüldüyse:

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

İkinci bir seçenek de NuGet.Org web sitesinden NuGet.exe indirmektir: https://dist.nuget.org/index.html Üretim makineleri için NugGet sürümü seçerken 2.8.5.208'den sonra olduğundan emin olun ve "önerilen" etiketli sürümü belirleyin. Tarayıcı kullanılarak indirildiyse dosyanın engellemesini kaldırmayı unutmayın. Bu, cmdlet'i Unblock-File kullanılarak gerçekleştirilebilir.

Her iki durumda da, NuGet.exe dosyası içindeki $env:PATHherhangi bir konuma kopyalanabilir, ancak standart konumlar şunlardır:

  • Yürütülebilir dosyayı tüm kullanıcıların ve Publish-Script cmdlet'lerini kullanabilmesi Publish-Module için:

    $env:ProgramData\Microsoft\Windows\PowerShell\PowerShellGet
    
  • Yürütülebilir dosyayı yalnızca belirli bir kullanıcının kullanımına açmak için yalnızca o kullanıcının profilindeki konuma kopyalayın:

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