Выполнение пакета служб SSIS 2012 с компонентами сценария из внешнего приложения

Я пишу приложение, которое будет выполнять пакет служб SSIS 2012 с использованием сборки Microsoft.SqlServer.ManagedDTS v 11.0. Пакет, который я пытаюсь выполнить, был разработан и успешно выполнен из SSDT-2012 и содержит компоненты сценария, которые обрабатывают строки, которые передаются неправильно.

Когда я пытаюсь запустить свое приложение, я получаю сообщение об ошибке для каждого из моих компонентов скрипта:

SSIS.Pipeline. Чтобы запустить пакет служб SSIS вне средств данных SQL Server, необходимо установить [Имя компонента сценария] служб Integration Services или более поздней версии.

Конфигурация: Сборка приложения для x86 в Windows со следующим файлом app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

Единственный соответствующий код:

using System;
using System.Data;
using System.Data.Common;
using System.IO;
using Microsoft.SqlServer.Dts.Runtime;
class MyApp
{
    public void ExecutePackage()
    {
        //Assume I have all the variables I need like packageFile, packageName, 
        //srcConnectionString, destConnectionString and eventListener etc.

        Package pkg;
        Application app;
        DTSExecResults pkgResults;

        app = new Application();
        pkg = app.LoadPackage(packageFile, eventListener);

        pkg.Variables["SrcConnectionString"].Value = srcConnectionString;
        pkg.Variables["DestConnectionString"].Value = destConnectionString;

        if (null != srcAssembly || null != destAssembly)
        {
            foreach (ConnectionManager connection in pkg.Connections)
            {
                if (null != srcAssembly && connection.Name.Contains("Source"))
                {
                    connection.SetQualifier(srcAssembly);
                }
                else if (null != destAssembly && connection.Name.Contains("Destination"))
                {
                    connection.SetQualifier(destAssembly);
                }
            }
        }

        pkgResults = pkg.Execute(null, null, eventListener, null, null);
    } 
}

Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос