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

如何获取SQL Server Express的SQL Server管理对象集合并解决依赖错误

解决SMO库独立运行时缺少Microsoft.SqlServer.ConnectionInfo的问题

这个问题我之前帮不少开发者排查过,核心原因就是SMO相关的依赖库没有被正确部署到独立运行环境——Visual Studio里因为自带了SQL Server开发工具,所以这些库默认存在,但独立运行时就需要手动处理了。针对你提到的SQL Server Express版本,给你几个可行的解决方案:

1. 使用NuGet包自动管理依赖(推荐)

这是最省心的方式,不需要用户额外安装任何组件,直接通过NuGet把所需的DLL打包到你的应用输出目录里:

  • 在Visual Studio的NuGet包管理器中,搜索并安装Microsoft.SqlServer.SqlManagementObjects包。这个包会自动包含Microsoft.SqlServer.ConnectionInfo、Microsoft.SqlServer.Management.Common、Microsoft.SqlServer.Smo等所有相关依赖。
  • 安装完成后,重新发布你的应用,这些DLL就会被复制到发布目录中,独立运行时就不会出现找不到文件的错误了。

2. 全局安装SQL Server管理对象(适用于多应用共享的场景)

如果你不想通过NuGet打包DLL,而是希望全局部署这些组件,其实SQL Server Express也可以使用通用的SMO安装包:

  • 你需要下载对应版本的SQL Server Feature Pack(你的错误里版本是14.100.0.0,对应SQL Server 2017),在Feature Pack里找到Microsoft SQL Server Management Objects (SMO)的安装程序(通常是一个.msi文件)。
  • 这个安装包适用于所有SQL Server版本(包括Express),安装完成后,系统全局就会注册这些依赖库,你的应用就能正常加载了。

3. 配置程序集绑定重定向(处理版本不一致的情况)

如果已经安装了SMO组件,但版本和项目引用的不一致(比如你引用的是14.100.0.0,但安装的是更高版本),可以在应用的app.config(或web.config)中添加绑定重定向,让系统自动使用已安装的版本:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.ConnectionInfo" 
                          publicKeyToken="89845dcd8080cc91" 
                          culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-14.100.0.0" 
                         newVersion="14.100.0.0" /> <!-- 替换为你实际安装的版本号 -->
      </dependentAssembly>
      <!-- 可以对其他SMO相关库(比如Smo、Management.Common)添加同样的重定向 -->
    </assemblyBinding>
  </runtime>
</configuration>

另外提醒一下:如果你的应用是.NET Core/.NET 5+版本,NuGet包的支持会更完善,直接安装对应的SMO包即可,不需要额外的全局安装;如果是.NET Framework版本,上述三种方案都适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:27:57