【问题标题】:Creating a reference to a custom assembly from an SSIS Script Task - vb从 SSIS 脚本任务创建对自定义程序集的引用 - vb
【发布时间】:2018-01-09 11:57:32
【问题描述】:

我正在寻找一种在我的 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;
     }
    . . .

【问题讨论】:

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


    【解决方案1】:

    不可能。

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

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

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

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

    【讨论】:

    • 感谢 Chandan,让我放弃了错误的道路。 :-)
    【解决方案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 server数据工具dll运行时目录

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

    例子

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

    之后,在脚本任务中,进入项目资源管理器,然后添加这个 dll 作为引用,它将出现在列出的引用中。

    【讨论】:

    • 谢谢你们——真的!做到了!很抱歉,我无法标记您的两个答案,但正如 Hadi 用大写字母为我拼出的 dll 的确切放置位置,我选择标记他的答案。
    • @kiro 您可以为许多答案投票。只接受一个。随时欢迎您。
    • 对于上面的 (2),我在 Data Tools vs2015 中发现,我必须将我的 .dll 添加到“PipelineComponents”或“Tasks”文件夹中……“Binn”不适用于我。此外,您似乎只需将 dll 添加到 SQL Server 版本文件夹之一(在我的情况下是最新的),否则稍后在“添加引用”对话框中会出现重复的引用!
    • @QACollective 你是对的,你必须将 dll 添加到与 ssis 相关的 sql server 版本中
    • 我正在尝试这样做,使用 vs2017 版本但似乎无法做到。发布问题here
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2011-01-05
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多