使用PowerShell连接MySQL时出现Renci.SshNet程序集加载报错怎么办
PowerShell 连接 MySQL 缺失 Renci.SshNet 程序集报错解决方案
完整报错信息:调用带“0”个参数的“Open”方法时触发异常:“无法加载文件或程序集“Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106”或其依赖项之一,系统找不到指定的文件。”
问题原因
该报错是由于你使用的 MySQL PowerShell 连接模块依赖 2016.1.0.0 版本的 SSH.NET 库(对应程序集为 Renci.SshNet),但当前 PowerShell 会话中未正确加载该版本程序集导致,多出现于带 SSH 隧道的 MySQL 连接场景。
解决方案
- 优先更新你使用的 MySQL 连接模块到官方最新稳定版,部分旧版本模块存在固定版本依赖问题,新版通常会兼容多版本 SSH.NET 程序集。
- 手动安装指定版本 SSH.NET 并加载:
- 以管理员权限启动 PowerShell,执行 NuGet 安装命令:
Install-Package SSH.NET -Version 2016.1.0 - 安装完成后,执行命令手动加载程序集到当前会话,替换为你本地的实际 dll 路径:
Add-Type -Path "C:\Users\你的用户名\.nuget\packages\ssh.net\2016.1.0\lib\net40\Renci.SshNet.dll"
- 以管理员权限启动 PowerShell,执行 NuGet 安装命令:
- 调整代码执行顺序,确保加载程序集操作在数据库连接操作之前执行,参考示例:
# 第一步:先加载 Renci.SshNet 程序集 Add-Type -Path "你的Renci.SshNet.dll本地绝对路径" # 第二步:初始化 MySQL 连接并打开 $connStr = "server=你的数据库地址;port=3306;user=用户名;password=密码;database=库名" $connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) $connection.Open()
- 若安装更高版本 SSH.NET 后仍出现版本不匹配报错,可在 PowerShell 配置文件中添加程序集绑定重定向规则,强制所有调用指向你本地已安装的版本即可。
内容的提问来源于stack exchange,提问作者Muzaffar Ur Rahman
相关产品推荐
相关产品推荐

