【发布时间】:2018-05-03 15:00:30
【问题描述】:
我们要求某些 SSIS 包需要在多个 SQL Server 版本(2014 和 2016)上运行,而我们无需维护 2 个版本的代码库。
我已经构建了一个包装 C# 控制台应用程序,该应用程序在配置中具有程序集重定向(如下所列),然后它调用 Package.Execute 方法来执行 DTSX 文件。
我收到以下错误,告诉我机器上找到的最新版本的 Microsoft.SqlServer.ScriptTask 程序集正在加载。该机器目前有 v12、13 和 14 组件。而且我需要使用 v13,因为我的目标是 SQL Server 2016。
任何想法为什么会这样做以及我如何正确“解决”它?
错误:
CS1705 - 程序集 'Microsoft.SqlServer.ScriptTask, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 使用 'Microsoft.SqlServer.ManagedDTS, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'具有比引用程序集更高的版本 'Microsoft.SqlServer.ManagedDTS, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
控制台应用配置中的重定向:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.ScriptTask" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.ManagedDTS" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.DTSRuntimeWrap" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.DTSPipelineWrap" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.PipelineHost" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-14.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding> </runtime>
【问题讨论】:
-
您必须检查不同的 ManagedDTS 程序集对象和类之间是否存在主要差异。如果发现这些差异,我认为您必须同意所提供的答案。否则,您可以回答您提出的问题
标签: sql-server ssis script-task assembly-binding-redirect ssis-2016