You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net MVC添加NuGet包Microsoft.SqlServer.SqlManagementObjects后出现签名验证错误

解决Microsoft.SqlServer.SqlManagementObjects加载失败的问题

这个问题我之前帮同事排查过,大概率是NuGet包依赖的组件没装全或者强名称签名验证出了问题,给你几个靠谱的解决步骤:

  • 安装对应版本的SQL Server Feature Pack组件
    SqlManagementObjects(SMO)的NuGet包依赖SQL Server的系统级共享组件,光靠NuGet有时候拉不全。你用的是140.17235.0版本(对应SQL Server 2017),安装对应版本的SQL Server Feature Pack里的「Microsoft SQL Server Management Objects」组件,它会把包括Microsoft.SqlServer.XEvent.Linq在内的所有依赖组件注册到GAC里。

  • 临时禁用强名称验证(仅测试环境用)
    如果确定组件没被篡改,只是签名验证卡壳了,可以用强名称工具跳过验证。以管理员身份打开命令提示符,运行:

    sn -Vr *,89845dcd8080cc91
    

    这个公钥是SQL Server官方组件通用的,执行完重启Visual Studio和你的应用,应该能绕过这个错误。注意生产环境别这么干,有安全风险。

  • 清理并重新还原NuGet包
    本地缓存的NuGet包可能损坏导致签名异常,试试这几步:

    • 删除项目目录下的packages文件夹
    • 删除解决方案根目录的packages文件夹(如果存在)
    • 在Visual Studio里右键解决方案,选择「还原NuGet包」
    • 重新生成整个解决方案
  • 检查项目目标框架兼容性
    140版本的SMO包要求.NET Framework 4.6.1及以上,确认你的ASP.NET MVC项目目标框架符合要求。如果是更低版本,要么升级框架,要么换对应版本的SMO包。

  • 手动添加缺失的程序集引用
    如果NuGet没自动引入Microsoft.SqlServer.XEvent.Linq,可以手动操作:

    • 右键项目→添加→引用→浏览,找到GAC里的对应版本组件(安装Feature Pack后会在GAC里)
    • 或者直接在NuGet包管理器里搜索Microsoft.SqlServer.XEvent.Linq,安装和SMO包版本一致的版本

内容的提问来源于stack exchange,提问作者muxdaddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:45:04