1

我在 .net 中创建了执行一些 SQL 数据操作的实用程序。

我目前已经参考以下版本 10.0.0.0 的 dll 构建应用程序

  • Microsoft.SqlServer.ManagedDTS
  • Microsoft.SqlServer.DTSRuntimeWrap
  • Microsoft.SqlServer.DTSPipelineWrap
  • Microsoft.SqlServer.PipelineHost

如果我从具有 SQLNCLI10 的 OS Windows 2008 运行此应用程序,它工作正常。
如果我从具有包含 SQL 客户端 SQLNCLI11 的 Windows 2012 的操作系统运行此应用程序,则它不起作用。它需要参考所有版本为 11.0.0.0 的 dll

app.config 中有什么方法可以有条件地引用 dll 吗?

有没有其他方法可以解决这个问题,所以我只能拥有一个可以同时运行上述环境(SQLNCLI10 和 SQLNCLI11)的应用程序。否则,我将不得不创建两个使用各自的 dll 版本编译的单独应用程序。

4

1 回答 1

0

检查bindingRedirect

例如,以下assemblyIdentity和 bindingRedirect 将依赖关系Microsoft.Windows.SampleAssembly从版本 2.0.0.0 重新配置到版本 2.1.0.0。

<dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" 
name="Microsoft.Windows.SampleAssembly"  
processorArchitecture="x86" 
publicKeyToken="0000000000000000"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
</dependency>
于 2013-05-10T06:54:49.067 回答