PowerShell PackageManagement,如何卸载包提供程序?
PowerShell PackageManagement, how to uninstall a package provider?
要解决问题,我想我会尝试重新安装 Chocolatey 包提供程序。似乎没有用于删除或卸载包提供程序的 cmdlet。我不是指删除包源或包。我在 Windows 10.
上使用 PowerShell 5
有没有办法卸载软件包提供程序?
如果我明白你想要什么:
Uninstall-Package[-Id][-RemoveDependencies][-ProjectName][-Force][-Version][-WhatIf]
使用 -Force 选项强制卸载软件包。
包提供程序与 WMF 安装捆绑在一起。
如果您知道搜索位置(甚至是您自己的自定义包提供商),您可以轻松添加(和删除)包提供商。
查找您的包提供程序的安装位置:
$p = (Get-packageProvider -name Chocolatey);
$p.ProviderPath
如果您将程序集删除/移动到提供商默认搜索路径之外的某个地方;它将不可用(注意:重新启动主机也会看到效果)。
同样,您可以通过将实现包提供程序规范的 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
为了补充 , given that the PackageManagement
module 从版本 1.4.7 开始仍然有 no Uninstall-PackageProvider
命令(请参阅带有 [=12 的模块附带的所有命令=]):
注意:为了以后能够撤消此更改,请记下 (Get-PackageProvider NuGet).ProviderPath
报告的路径并制作该文件的备份副本。
Step-by-step 说明 用于删除 NuGet
包提供程序,例如:
在Windows:
将NuGet package-provider程序集(DLL)的路径复制到剪贴板:
(Get-PackageProvider NuGet).ProviderPath | Set-Clipboard
启动提升的 PowerShell 会话(运行 作为管理员 - 需要管理员凭据)。要从现有 (non-elevated) 会话执行此操作,运行:
Start-Process -Verb RunAs (Get-Process -Id $PID).Path
在继续之前,关闭所有其他 PowerShell 会话,其中可能包括需要退出 Visual Studio 代码。
- 只有在当前没有加载会话的情况下,删除 DLL 才会成功;如果不能确保这一点,您将收到
Access denied
错误,即使有提升也是如此。
在 elevated session(你不能在其中提交任何 PackageManagement
命令)中,提交以下命令删除 NuGet package-provider程序集(DLL):
Remove-Item -Force <paste-the-previously-copied-path-here>
在 macOS 和 Linux 上:
与 sudo
启动 PowerShell 会话。要从现有 (non-elevated) 会话执行此操作,运行:
sudo pwsh
提交以下命令删除 NuGet package-provider 程序集 (DLL):
(Get-PackageProvider NuGet).ProviderPath | Remove-Item -Force
剩余步骤适用于所有平台:
退出提升的/sudo
会话。
启动 new (non-elevated) 会话以使更改生效:Get-PackageProvider
应该不再列出 NuGet
提供商。
要解决问题,我想我会尝试重新安装 Chocolatey 包提供程序。似乎没有用于删除或卸载包提供程序的 cmdlet。我不是指删除包源或包。我在 Windows 10.
上使用 PowerShell 5有没有办法卸载软件包提供程序?
如果我明白你想要什么:
Uninstall-Package[-Id][-RemoveDependencies][-ProjectName][-Force][-Version][-WhatIf]
使用 -Force 选项强制卸载软件包。
包提供程序与 WMF 安装捆绑在一起。
如果您知道搜索位置(甚至是您自己的自定义包提供商),您可以轻松添加(和删除)包提供商。
查找您的包提供程序的安装位置:
$p = (Get-packageProvider -name Chocolatey);
$p.ProviderPath
如果您将程序集删除/移动到提供商默认搜索路径之外的某个地方;它将不可用(注意:重新启动主机也会看到效果)。
同样,您可以通过将实现包提供程序规范的 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
为了补充 PackageManagement
module 从版本 1.4.7 开始仍然有 no Uninstall-PackageProvider
命令(请参阅带有 [=12 的模块附带的所有命令=]):
注意:为了以后能够撤消此更改,请记下 (Get-PackageProvider NuGet).ProviderPath
报告的路径并制作该文件的备份副本。
Step-by-step 说明 用于删除 NuGet
包提供程序,例如:
在Windows:
将NuGet package-provider程序集(DLL)的路径复制到剪贴板:
(Get-PackageProvider NuGet).ProviderPath | Set-Clipboard
启动提升的 PowerShell 会话(运行 作为管理员 - 需要管理员凭据)。要从现有 (non-elevated) 会话执行此操作,运行:
Start-Process -Verb RunAs (Get-Process -Id $PID).Path
在继续之前,关闭所有其他 PowerShell 会话,其中可能包括需要退出 Visual Studio 代码。
- 只有在当前没有加载会话的情况下,删除 DLL 才会成功;如果不能确保这一点,您将收到
Access denied
错误,即使有提升也是如此。
- 只有在当前没有加载会话的情况下,删除 DLL 才会成功;如果不能确保这一点,您将收到
在 elevated session(你不能在其中提交任何
PackageManagement
命令)中,提交以下命令删除 NuGet package-provider程序集(DLL):Remove-Item -Force <paste-the-previously-copied-path-here>
在 macOS 和 Linux 上:
与
sudo
启动 PowerShell 会话。要从现有 (non-elevated) 会话执行此操作,运行:sudo pwsh
提交以下命令删除 NuGet package-provider 程序集 (DLL):
(Get-PackageProvider NuGet).ProviderPath | Remove-Item -Force
剩余步骤适用于所有平台:
退出提升的/
sudo
会话。启动 new (non-elevated) 会话以使更改生效:
Get-PackageProvider
应该不再列出NuGet
提供商。