从SSIS脚本任务创建对自定义程序集的引用 - vb

时间:2018-01-09 11:57:33

标签: c# sql-server vb.net ssis

我正在寻找一种在我的SSIS脚本任务中创建“Imports Newtonsoft.Json.Linq”的方法,但这显然不像SSIS中的“管理NuGet包”那么简单。那还有另外一种解决方法。

我找到一个link看起来像是一个可能的解决方案,但由于我不是熟练的程序员,我在从C#转换为vb时遇到问题。我希望有人可以帮助我,或者指导我朝另一个方向前进。

我使用的是Visual Studio 2010 Shell,.Net Framework 4.6.0,公司代码语言是vb。

以下是上述链接中的C#代码的副本。 :

[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
     static ScriptMain()
     {
         AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
     }
     static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
     {
         if (args.Name.Contains("ssisHelper"))
         {
             string path = @"c:\temp\";
             return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "ssisHelper.dll"));
         }
         return null;
     }
    . . .

2 个答案:

答案 0 :(得分:2)

不可能。

如果添加任何第三方库(.dll)文件,SSIS将在visual studio(本地)内运行。因此,在本地它将正常工作(在Visual Studio中运行)。但是一旦你通过SQL Server作业/ ETL运行它,它就不会。

唯一的方法是您需要在运行SSIS的服务器的“GACUTIL”中添加第三方库/库(通过SQL-JOB / ETL ...)。

正如您所提到的,您正在使用“Newtonsoft.Json”,因此,将Newtonsoft.Json.dll复制到运行SSIS包的服务器(gacutil)。

尝试此操作,如果您遇到任何问题,请告知我们

答案 1 :(得分:2)

您必须将Newtonsoft.Json dll文件添加到以下目录

(1).Net Framework dll目录

 C:\Windows\Microsoft.NET\Framework\v[.net installed version]\ 

例如

C:\Windows\Microsoft.NET\Framework\v4.0.30319\

(2)SQL服务器数据工具dll运行时目录

C:\Program Files (x86)\Microsoft SQL Server\[SQL Server version]\DTS\Binn

例如

C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn

之后,在Script Task中,转到项目资源管理器,然后添加此dll作为参考,它将出现在列出的参考中。