我有一个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注册吗?
答案 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];
}