我有商业智能 - >我有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包中调用非托管代码 - >脚本任务?
答案 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是特定于版本的,请确保复制到您拥有的正确版本。