【问题标题】:SSIS throwing exception: Could not load file or assembly 'Interop.ActiveDs..."SSIS 抛出异常:无法加载文件或程序集“Interop.ActiveDs ...”
【发布时间】:2013-07-01 14:54:16
【问题描述】:

我有一个引用 Interop.ActiveDs 的 SSIS 包。在脚本编辑器中,可以识别我正在使用的类型,并且脚本可以很好地构建和保存。执行包时会抛出异常

Could not load file or assembly 'Interop.ActiveDs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

当您在脚本编辑器中时,所有属性都指向一个临时目录。毫无疑问,当您保存并退出脚本时,临时目录将被放弃。执行脚本时,会将副本放置在文件系统上?可能它不会复制或保留依赖的 dll?。

SSIS 可以解决这个问题吗?

到目前为止,我得到的是 ActiveDs 是 COM 而 SSIS 不会做 COM?需要在 GAC 中注册吗?

【问题讨论】:

    标签: exception ssis interop directoryservices


    【解决方案1】:

    因此,当尝试在 SSIS 中进行这项工作时,这里有两个问题

    if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
    {
        var _uSNChanged = (IADsLargeInteger)result.Properties["uSNChanged"][0];
        Output0Buffer.uSNChanged = (_uSNChanged.HighPart << 32) + _uSNChanged.LowPart;
    }
    

    第一个 IADsLargeInteger 是一个 COM 对象。为了使用它,您需要创建一个 Interop dll 并在 GAC 中注册它。我相信,这个post 解决了这个问题。从那以后我就没有尝试过这个......

    其次,如果所有内容一开始都输入正确,似乎所有这些都可以避免。因此,与其为了做不必要的翻译而搞乱 COM Interop,我相信这是解决问题的更好方法。

    if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
    {
        Output0Buffer.uSNChanged  = (Int64)result.Properties["uSNChanged"][0];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多