EPPlus цикл зависимостей - PullRequest
3 голосов
/ 16 октября 2019

При установке EPPlus из PowerShell я получаю следующее (все команды запускаются впервые):

$PackageSource=Get-PackageSource -Name "PSGallery"
if (!$PackageSource.IsTrusted) { Set-PackageSource -Trusted -Name "PSGallery" > $null }

# NuGet PackageProvider
$PackageProvider=Get-PackageProvider -ListAvailable | Where-Object { $_.Name -eq "NuGet" }
$InstallPackageProvider=$false
if ($PackageProvider -eq $null) { $InstallPackageProvider=$true }
else {
  $TargetVersion=[Microsoft.PackageManagement.Internal.Utility.Versions.FourPartVersion]::Parse("2.8.5.208")
  if ($PackageProvider.Version -lt $TargetVersion) { $InstallPackageProvider=$true }
}
if ($InstallPackageProvider) { Get-PackageProvider -Name "NuGet" -ForceBootStrap > $null }

# Package Management
$PackageProvider=Get-Module -ListAvailable | Where-Object { $_.Name -eq "PackageManagement" }
$InstallPackageProvider=$false
if ($PackageProvider -eq $null) { $InstallPackageProvider=$true }
else {
  $TargetVersion=[System.Version]::new(1,4,5)
  if ($PackageProvider.Version -lt $TargetVersion) { $InstallPackageProvider=$true }
}
if ($InstallPackageProvider) { Install-Module -Name "PackageManagement" -MinimumVersion $TargetVersion -Force > $null }

# PowerShellGet
$PackageProvider=Get-PackageProvider -ListAvailable | Where-Object { $_.Name -eq "PowerShellGet" }
$InstallPackageProvider=$false
if ($PackageProvider -eq $null) { $InstallPackageProvider=$true }
else {
  $TargetVersion=[Microsoft.PackageManagement.Internal.Utility.Versions.FourPartVersion]::Parse("2.2.1.0")
  if ($PackageProvider.Version -lt $TargetVersion) { $InstallPackageProvider=$true }
}
if ($InstallPackageProvider) { Install-Module -Name "PowerShellGet" -MinimumVersion $TargetVersion -Force > $null }

$FilePath="~\Desktop"
$FileName="bat.bat"

New-Item -Path $FilePath -Name $FileName -ItemType File -Force > $null
$PackageProvider=Get-Module -ListAvailable | Where-object { ($_.Name -eq "PackageManagement") -and ($_.Version.ToString() -eq "1.0.0.1") }
if ($PackageProvider -ne $null) { Out-File -FilePath "$FilePath\$FileName" -Encoding ASCII -Append -InputObject ('rd "'+$($PackageProvider.ModuleBase)+'" /s /q') }

$PackageProvider=Get-Module -ListAvailable | Where-object { ($_.Name -eq "PowerShellGet") -and ($_.Version.ToString() -eq "1.0.0.1") }
if ($PackageProvider -ne $null) { Out-File -FilePath "$FilePath\$FileName" -Encoding ASCII -Append -InputObject ('rd "'+$($PackageProvider.ModuleBase)+'" /s /q') }

# Quit all PowerShell instances, open a command prompt as administrator and run the batch file

PS C:\Windows\system32> Get-Module -ListAvailable #(edited for brevity)

    Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.4.5      PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-PackageSource...}
Script     2.2.1      PowerShellGet                       {Find-Command, Find-DSCResource, Find-Module, Find-RoleCapability...}

PS C:\Windows\system32> Get-PackageProvider #(edited for brevity)

Name                     Version          DynamicOptions
----                     -------          --------------
NuGet                    3.0.0.1          Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains...
PowerShellGet            2.2.1.0          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpd...

$PackageSource=Get-PackageSource -Name "PSGallery"
if (!$PackageSource.IsTrusted) { Set-PackageSource -Trusted -Name "PSGallery" > $null }

$Repository=Get-PSRepository -Name "NuGet"
if ($Repository -eq $null) { Register-PSRepository -Name "NuGet" -SourceLocation "https://www.nuget.org/api/v2" -PackageManagementProvider "NuGet" -InstallationPolicy "Trusted" }

Install-Module -Name "EPPlus" -Repository "NuGet" -MinimumVersion "4.5.3.1"

PackageManagement\Install-Package : Dependency loop detected for package 'EPPlus'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2.1\PSModule.psm1:9683 char:34
+ ... talledPackages = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Deadlock detected: (EPPlus:String) [Install-Package], Exception
    + FullyQualifiedErrorId : DependencyLoopDetected,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

Windows 2016 Standard, Office не установлен, $ Host.Version = 5.1. 14393.3053

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...