为了解决问题,我想我会尝试重新安装 Chocolatey 包提供程序。似乎没有用于删除或卸载包提供程序的 cmdlet。我不是指删除包源或包。我在 Windows 10 上使用 PowerShell 5。
有没有办法卸载包提供程序?
为了解决问题,我想我会尝试重新安装 Chocolatey 包提供程序。似乎没有用于删除或卸载包提供程序的 cmdlet。我不是指删除包源或包。我在 Windows 10 上使用 PowerShell 5。
有没有办法卸载包提供程序?
包提供程序与 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
如何删除 NuGet 提供程序的简单示例
(Get-PackageProvider|where-object{$_.name -eq "nuget"}).ProviderPath|Remove-Item -force
Restart-Computer
为了补充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。
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
提供程序。
如果我明白你想要什么:
卸载包[-Id] [-RemoveDependencies] [-ProjectName ] [-Force] [-Version ] [-WhatIf]
使用 -Force 选项强制卸载软件包。