You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server与Visual Studio:解决Microsoft.SqlServer.Types版本冲突问题

解决SQL Server CLR程序集版本冲突问题(Microsoft.SqlServer.Types)

别担心,这个版本冲突问题在CLR程序集开发里挺常见的,我给你两个最优方案,按优先级来选:

方案1:让项目引用和SQL Server一致的版本(最推荐,新手友好)

你的核心矛盾是VS项目里用了15.100.0.0版本的Microsoft.SqlServer.Types,但SQL Server 2019自带的是15.0.0.0,而且这个是系统级程序集根本动不了。所以最直接省心的就是把项目里的引用版本改成和SQL Server匹配的:

  • 打开VS 2019的项目,右键点击「引用」→「管理NuGet程序包」
  • 切换到「已安装」标签,找到Microsoft.SqlServer.Types,点击「卸载」确认移除当前的高版本
  • 再切换到「浏览」标签,搜索Microsoft.SqlServer.Types,找到15.0.0.0版本(注意看版本号,选和SQL Server一致的基础版本),点击「安装」
  • 重新编译你的程序集,再导入SQL Server,这个版本冲突的错误就会消失了

方案2:用程序集绑定重定向(必须用高版本时可选)

如果因为某些功能依赖,你必须用15.100.0.0版本,那可以通过绑定重定向让SQL Server把对高版本的引用映射到系统自带的15.0.0.0版本:

  1. 在你的CLR类库项目里添加一个app.config文件(如果项目里没有的话)
  2. 把下面的配置代码粘贴进去:
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.Types" 
                          publicKeyToken="89845dcd8080cc91" 
                          culture="neutral" />
        <bindingRedirect oldVersion="15.100.0.0" 
                         newVersion="15.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
  1. 重新编译项目,然后把编译好的程序集导入SQL Server。这时候SQL Server会自动按照重定向配置,用系统的15.0.0.0版本来替代你引用的高版本,解决加载失败的问题。

小提醒

绑定重定向要确保15.0.0.0版本包含你用到的所有API,不然可能会出现运行时错误。所以如果不是必须用高版本,优先选方案1更稳妥。

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

火山引擎 最新活动