1

我有一个引用 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 中注册吗?

4

1 回答 1

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 中注册它。我相信,这篇文章已经解决了这个问题。从那以后我没有尝试过这个...

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

if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
{
    Output0Buffer.uSNChanged  = (Int64)result.Properties["uSNChanged"][0];
}
于 2013-06-28T23:58:54.570 回答