c# - SSIS 在 GAC 中将 JSON.NET 用于脚本组件

标签 c# ssis sql-server-2012 json.net

我构建了一个 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。


我尝试解决的问题

  1. 检查了Scopus Library,Json.Net和SSIS Script Component都使用了4.5版本的.Net Framework。
  2. 仔细检查 GAC 中的 Scopus 和 Json.Net 库是否正确
  3. 确保我拥有最新版本的 Json.Net 库
  4. 检查每台机器上mscorlib.dll的版本
    LOCAL,DEV机器是文件版本4.0.30319.18052
    测试机器是 文件版本 4.0.30319.1008
  5. 扫描 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/

相关文章:

variables - 如何将数据库名称设置为 SSIS 中的变量?

sql - 我正在尝试编写一个 SQL 嵌套查询来查找/使用最大值来查找最大值之前的条目

sql-server - 在 SSRS 中将 YYYYMM 格式化为 MMMYYYY

c# - 正则表达式 - 小写字母数字和正斜杠

c# - .NET 任务中的代码最终是否通过 native Windows 线程在 CPU 或 CPU 核心上运行?

sql-server - 如何跳过ssis平面文件源中的坏行

sql-server - SSIS 包日期格式

c# - 在 IEnumerable 上使用 Observable 集合的优缺点

C# 在 ListView 中显示文件和文件夹图标

sql - 选项 "WITH RECOMPILE"可用于减少阻塞超时吗?