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

Creating a reference to a custom assembly from an SSIS Script Task - vb

我正在寻找一种在我的 SSIS 脚本任务中创建 "Imports Newtonsoft.Json.Linq" 的方法,但这显然不像在 SSIS 中创建 "manage NuGet Packages" 那样简单。那么还有另一种解决方法吗?

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

我使用的是Visual Studio2010Shell、.Net Framework 4.6.0,公司代码语言是vb.

这是上面 link 中的 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;
     }
    . . .

不可能。

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

唯一的方法是你需要在你的SSIS所在服务器的"GACUTIL"中添加你的第三方library/libraries 运行ning (通过 SQL-JOB/ETL...)。

如您所述,您正在使用 "Newtonsoft.Json",因此,将 Newtonsoft.Json.dll 复制到服务器 (gacutil),其中 SSIS 包是 运行ning。

试试这个,如果遇到任何问题请告诉我

您必须将 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 Server0\DTS\Binn

之后,在脚本任务中,转到项目资源管理器,然后将此 dll 添加为引用,它将出现在列出的引用中。