SSIS抛出异常:无法加载文件或程序集“Interop.ActiveDs ......”

时间:2013-06-28 19:54:39

标签: exception ssis interop directoryservices

我有一个SSIS包,我参考了Interop.ActiveDs。在脚本编辑器中,我正在使用的类型被识别,脚本构建并保存得很好。执行包时,它会抛出异常

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注册吗?

1 个答案:

答案 0 :(得分: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];
}