0

我有一个在 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。

有人对这里可能出了什么问题有任何想法吗?

4

1 回答 1

0

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

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

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

于 2013-03-05T17:50:13.873 回答