从SSIS脚本任务调用非托管代码

时间:2016-01-26 00:23:49

标签: c# .net visual-studio-2013 ssis etl

我有商业智能 - >我有SSIS包的Integration Services项目 - >脚本任务。我需要使用DllImport从Script Task Unmanaged代码调用。由于我不知道在运行期间脚本任务的代码存储在哪里,因此无法调用我的非托管dll。

脚本任务下面的示例代码:

using System; // Console
using System.Runtime.InteropServices; // DllImport

class App
{
    [DllImport("lib.dll", CallingConvention = CallingConvention.Cdecl)]
extern static int next(int n);

    static void Main()
    {
       Console.WriteLine(next(0));
       Dts.TaskResult = (int)ScriptResults.Success;
    }
}

您可以找到有关脚本任务here

的更多信息

问题:如何从SSRS包中调用非托管代码 - >脚本任务?

2 个答案:

答案 0 :(得分:1)

SSIS不会按位置加载dll,即使是托管的dll也是如此。你必须GAC他们,http://microsoft-ssis.blogspot.com/2011/05/referencing-custom-assembly-inside.html。因此,我希望您必须COM注册您的非托管dll,https://technet.microsoft.com/en-us/library/bb490985.aspx

答案 1 :(得分:0)

确保将c / c ++ dll复制到“ C:\ Program Files \ Microsoft SQL Server \ 120 \ DTS \ Binn ”中,当托管代码调用 DllImport时 强>

注意:120是特定于版本的,请确保复制到您拥有的正确版本。