从 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 添加为引用,它将出现在列出的引用中。
我正在寻找一种在我的 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 添加为引用,它将出现在列出的引用中。