我正在寻找一种在我的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;
}
. . .
答案 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作为参考,它将出现在列出的参考中。