У меня есть пакет служб SSIS, содержащий элемент «ExecutePackageTask» на главной вкладке «Поток данных» пакета.Я пытаюсь использовать API служб SSIS для подготовки информации в пакете, и у меня возникла проблема, из-за которой я не могу преобразовать Task.InnerObject пакета из типа _COMObject в конкретный тип.
Я установилссылка на следующую dll
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ CommonExtensions \ Microsoft \ SSIS \ 140 \ Binn \ Microsoft.SqlServer.ExecPackageTaskWrap.dll
, для которого определен тип ExecutePackageTaskClass.
if (taskHost.InnerObject is ExecutePackageTaskClass ||
taskHost.InnerObject is ExecutePackageTask ||
taskHost is IDTSExecutePackage100)
{
//Never enters this block because it doesn't identify the type of the __Combject
//However, if I force the execution down this path the properties on the object appear to match that of the ExecutePackageTaskClass
foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(taskHost.InnerObject))
{
Console.WriteLine(prop.Name);
}
}
Вот как выглядит XML объекта в файле DTSX с помощью блокнота:
<DTS:Executables>
<DTS:Executable
DTS:refId="Package\Call SplitPackageAny"
DTS:ExecutableType="SSIS.ExecutePackageTask.3"
DTS:TaskContact="Microsoft Corporation; Microsoft SQL Server v10; (C) 2007 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"
DTS:LocaleID="-1"
DTS:ObjectName="Call SplitPackageAny"
DTS:DTSID="{0AAB5947-6897-48EF-B5EC-D9BFFC6F9BFE}"
DTS:Description="Execute Package Task"
DTS:CreationName="SSIS.ExecutePackageTask.3">
<DTS:Variables />
<DTS:ObjectData>
<ExecutePackageTask>
<Connection>{D84DFA79-A175-4E40-80E5-CC79B005F26C}</Connection>
</ExecutePackageTask>
</DTS:ObjectData>
</DTS:Executable>
https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.dts.tasks.executepackagetask.executepackagetaskclass?view=sqlserver-2017
? taskHost.InnerObject.GetType().Name
"__ComObject"
Что мне нужно сделать, чтобы получить строго типизированный объект?Я добился успеха со многими другими объектами служб SSIS.