23

为了解决问题,我想我会尝试重新安装 Chocolatey 包提供程序。似乎没有用于删除或卸载包提供程序的 cmdlet。我不是指删除包源或包。我在 Windows 10 上使用 PowerShell 5。

有没有办法卸载包提供程序?

4

4 回答 4

22

包提供程序与 WMF 安装捆绑在一起。

如果您知道搜索位置(甚至是您自己的自定义包提供者),则可以轻松添加(和删除)包提供者。

查找您的软件包提供程序的安装位置:

$p = (Get-packageProvider -name Chocolatey);
$p.ProviderPath

如果您将程序集删除/移动到提供程序默认搜索路径之外的某个位置;它将不可用(注意:重新启动主机也可以查看效果)。

同样,您可以通过将实现 packageprovider 规范的 exe / dll 复制到搜索位置来添加包提供程序。

可以在此处找到更多文档(实现您自己的和默认搜索位置):

https://github.com/OneGet/oneget/wiki/Provider-assembly-search-locations https://github.com/OneGet/oneget/wiki/ImplementingPackageProvider

于 2015-12-15T22:18:48.263 回答
1

如何删除 NuGet 提供程序的简单示例

(Get-PackageProvider|where-object{$_.name -eq "nuget"}).ProviderPath|Remove-Item -force
Restart-Computer
于 2020-08-12T16:12:54.020 回答
0

为了补充Harald F 的有用答案,鉴于 1.4.7 版的PackageManagement模块仍然没有 Uninstall-PackageProvider命令(请参阅模块附带的所有命令Get-Command -Module PackageManagement):

注意:为了以后能够撤消此更改,请记下报告的路径(Get-PackageProvider NuGet).ProviderPath并制作该文件的备份副本。

删除包提供程序的分步说明NuGet,例如:

  • Windows上:

    • 将 NuGet 包提供程序程序集 (DLL) 的路径复制到剪贴板:

      • (Get-PackageProvider NuGet).ProviderPath | Set-Clipboard
    • 启动提升的 PowerShell 会话(以管理员身份运行 - 需要管理员凭据)。要从现有(非提升)会话中执行此操作,请运行:

      • Start-Process -Verb RunAs (Get-Process -Id $PID).Path
    • 在继续之前,请关闭所有其他 PowerShell 会话,其中可能包括需要退出 Visual Studio Code。

      • 仅当当前没有会话加载 DLL 时,删除 DLL 才会成功;如果不能确保这一点Access denied,即使有海拔,您也会收到错误消息。
    • 提升的会话中(您不得在其中提交任何PackageManagement命令),提交以下命令以删除 NuGet 包提供程序程序集 (DLL):

      • Remove-Item -Force <paste-the-previously-copied-path-here>
  • macOS 和 Linux 上

    • 使用sudo. 要从现有(非提升)会话中执行此操作,请运行:

      • sudo pwsh
    • 提交以下命令以删除 NuGet 包提供程序程序集 (DLL):

      • (Get-PackageProvider NuGet).ProviderPath | Remove-Item -Force
  • 其余步骤适用于所有平台:

    • 退出提升/sudo会话。

    • 启动一个的(非提升的)会话以使更改生效:Get-PackageProvider然后应该不再列出NuGet提供程序。

于 2022-03-01T22:05:23.953 回答
-1

如果我明白你想要什么:

卸载包[-Id] [-RemoveDependencies] [-ProjectName ] [-Force] [-Version ] [-WhatIf]

使用 -Force 选项强制卸载软件包。

于 2015-09-15T14:12:12.467 回答