如何解决SSIS dtsx文件和GAC之间的版本错误?

时间:2013-03-05 15:41:13

标签: ssis version gac

我有一个我在SSIS包中引用的DLL。我强力命名并添加到GAC。在我的开发机器上一切正常。现在我正在尝试部署包。所以在服务器上,我使用我创建的Windows安装程序包将DLL添加到GAC中。 GAC中DLL的版本是7.2.0.1。然后,我在服务器上运行了包的部署实用程序安装程序。这成功运行并使用.dtsx文件创建了包。如果我在服务器上的记事本中打开.dtsx文件并查找DLL的引用,它表示它正在引用7.2.0.1。然后我设置了实际运行包的工作。启动作业后,程序包运行并失败。这会在事件查看器中创建一条错误消息,指出程序包正在查找版本7.1.0.9。

我到处寻找这个版本的DLL的副本,但找不到它。我搜索了我的开发机器和服务器,没有7.1.0.9。我不确定这个DLL有没有那个版本。所有引用都指向7.2.0.1,但无论我做什么,它仍然认为它需要7.1.0.9。

有没有人对这里的错误有任何想法?

1 个答案:

答案 0 :(得分:0)

在SSIS 2005和SSIS 2008R2中使用自定义DLL时,我们发现必须在.NET Framework 2.0目录中的GAC 中安装两者的DLL ,这两个版本必须匹配。 IIRC,BIDS使用.NET Framework 2.0文件夹中的版本进行包设计,并通过dtexec进行包验证; GAC中的版本用于包执行。我相信(但是从未试图证明)DLL强名称被编译成脚本任务/组件的二进制表示。

因此,我首先要查看是否有一个版本7.1.0.9 DLL的副本隐藏在.NET Framework 2.0文件夹中的任何位置,或者在开发框和目标上隐藏在PATH环境变量中的任何其他位置服务器

(注意:我不知道SSIS 2012是否具有相同的行为,因此这可能适用于您的情况,也可能不适用。)