SQL Server SMO绑定重定向

时间:2018-09-11 07:43:19

标签: c# .net sql-server .net-assembly

有问题的应用程序将Microsoft Sql Server(2008 R2,快速版)与SMO库一起使用。最新更新是Windows 7的2011年。 现在,我必须确保它可以在Windows 10和Windows 7上运行。随着应用程序生命周期的临近,我应该避免重新编译。

我从一个干净的Windows 10虚拟机开始并安装了SQL Server 2016。 在Windows 10虚拟机上,一切正常。

然后,客户为我提供了一台测试机。 由于内部测试失败,因此已经在此计算机上安装了SQL Server 2008。 SQL Server 2016与其他实例名称并行安装。应用程序配置已更改为使用新的数据库实例。 尝试在2016数据库实例上创建新数据库时,SMO库引发了异常“索引超出数组范围”。

sysinternals的“ Process Explorer”显示物理测试计算机上的应用程序使用版本10的SMO库,该库随SQL 2008 R2一起安装。

在阅读了主题为“重定向程序集绑定”的主题的主题后,例如 Assembly Binding redirect: How and Why? 我在配置文件中插入了以下代码块。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Smo" publicKeyToken="89845dcd8080cc91" culture="neutral" >
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </assemblyIdentity>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

但是在运行时仍将使用SMO版本10.0。 我监督了assemblyBinding的配置中的某些内容,还是无法按此处Is it possible to replace a reference to a strongly-named assembly with a "weak" reference?所述将SMO库重定向到其他版本。 但是为什么它可以在虚拟机上运行呢?

0 个答案:

没有答案