根据安装的SQL客户端在app.config中有条件地引用Microsoft.SqlServer.ManagedDTS dll

时间:2013-05-10 06:35:47

标签: c# .net

我在.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版本编译的独立应用程序。

1 个答案:

答案 0 :(得分: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>