So there are two issues here when trying to make this work in 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;
}
First IADsLargeInteger is a COM object. In order to use it you'd need to create an Interop dll and register it in the GAC. This, I believe, is addressed by this post. I haven't tried this since...
Second though, it seems all of this can be avoided if everything is typed correctly to begin with. So in stead of messing around with COM Interop just to do an unnecessary translation, I believe this is the better solution to the issue.
if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
{
Output0Buffer.uSNChanged = (Int64)result.Properties["uSNChanged"][0];
}