我构建了一个 Scopus 库 (dll),我将其加载到 GAC 中以供 SSIS 包的脚本组件使用。 该库基于 .Net framework 4.5 并使用了我也加载到 GAC 中的 Json.Net Lib。
当在我的本地和开发机器上通过 SSIS 目录中的 SSISDB 运行包时,它工作正常,当我以相同的方式在测试机器上运行它时,它失败并出现以下错误。
DFT - S_SCOPUS_PUBL_META_EXTRACT: Error: System.TypeloadException: Could not load the type System.Collections.Generic.IReadOnlyDictionart '2' from assembly mscorlib, version 4.0.0.0 Culture=neutral, PublicKeyToken=b77a5c661934e089.
在
Microsoft.SQLServer.Dts.Pipeline.SciptComponentHost.HandleUserException(Exception(e)
在
Microsoft.SQLServer.Dts.Pipeline.SciptComponentHost.
等等。
盒子设置: SQL Server 2012、用于开发和测试的 Server 2012 以及用于本地的 SQL Server 2012 和 Windows 7。
我尝试解决的问题
- 检查了Scopus Library,Json.Net和SSIS Script Component都使用了4.5版本的.Net Framework。
- 仔细检查 GAC 中的 Scopus 和 Json.Net 库是否正确
- 确保我拥有最新版本的 Json.Net 库
- 检查每台机器上mscorlib.dll的版本
LOCAL,DEV机器是文件版本4.0.30319.18052
测试机器是 文件版本 4.0.30319.1008 - 扫描 TEST 机器上的更新,看看它是否需要任何额外的补丁来更新 mscorlib.dll 文件(它告诉我它是最新的 - 请记住我不是系统管理员,所以他们可能是退缩)。
是否有人对如何解决此错误有任何其他想法?
最佳答案
我不知道 SSIS 2012 是否还有这种行为;但是,在 SSIS 2005 和 2008 中,我发现脚本组件引用的 GACing 自定义 DLL还不够。我还必须将自定义 DLL 复制到目标计算机的 .NET Framework 文件夹,以便 SSIS 运行时可以在验证包时找到它们。
关于c# - SSIS 在 GAC 中将 JSON.NET 用于脚本组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18504251/