首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EPPlus依赖循环

EPPlus依赖循环
EN

Stack Overflow用户
提问于 2019-10-17 00:37:01
回答 1查看 880关注 0票数 3

从PowerShell安装EPPlus时,我得到以下信息(所有命令都是第一次运行):

代码语言:javascript
复制
$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标准版,未安装Office,$Host.Version = 5.1.14393.3053

EN

回答 1

Stack Overflow用户

发布于 2019-11-27 01:26:55

我在使用libphonenumber-csharp包时也遇到了同样的问题。我显然不明白为什么它会突然停止工作,但对我来说,-SkipDependencies是依赖循环的答案:

代码语言:javascript
复制
Install-Package libphonenumber-csharp -Destination ".\NugetPackages" -Force -Source 'https://www.nuget.org/api/v2' -ProviderName NuGet -RequiredVersion '8.10.23' -SkipDependencies -ErrorAction SilentlyContinue

我不知道它是否有帮助,但我首先安装了最新的Nuget提供程序,在提升的PowerShell提示符下运行以下命令:

代码语言:javascript
复制
Install-PackageProvider Nuget –force –verbose
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58417976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档