PowerShell 6安装NuGet Package Provider遇未处理异常求助
解决Install-PackageProvider NuGet时的TypeInitializationException错误
我之前碰到过一模一样的错误,折腾了好一会儿才搞定,这个问题大多和PowerShell依赖的.NET Framework组件或者环境兼容性有关,给你几个亲测有效的方案:
方案1:先检查并更新.NET Framework
这个TypeInitializationException异常很多时候是因为系统上的.NET Framework版本太旧或者组件损坏导致的:
- 打开控制面板 → 程序和功能,查看已安装的.NET Framework版本,确保至少是4.5.2或更高版本
- 如果版本不够,去微软官网下载安装对应系统的最新.NET Framework版本
- 安装完成后务必重启系统,再尝试运行你的安装命令
方案2:切换到稳定版PowerShell运行
有时候默认的PowerShell版本可能存在兼容性问题,试试用PowerShell 5.1(目前最稳定的Windows内置版本):
- 按下Win+X,选择「Windows PowerShell (管理员)」
- 先设置TLS 1.2(很多NuGet源需要这个才能正常访问),再执行安装命令:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
方案3:手动安装NuGet Provider
如果上面的方法都不行,可以绕开自动安装,手动部署:
- 先查看PowerShell Package Provider的默认安装路径:
$env:ProgramFiles\PackageManagement\ProviderAssemblies
- 手动下载对应版本(2.8.5.201)的NuGet Provider DLL文件,放到上面的路径中
- 执行命令注册这个Provider:
Register-PackageProvider -Name NuGet -Force
方案4:修复系统和PowerShell组件
要是怀疑PowerShell本身的组件损坏了,可以试试系统修复:
- 打开管理员命令提示符,执行系统文件扫描修复:
sfc /scannow
- 扫描完成后重启电脑,再重新打开PowerShell尝试安装
你可以按顺序尝试这些方法,我当时是更新.NET Framework后就解决了,希望对你有用!
内容的提问来源于stack exchange,提问作者GingerDom




