Sql server SSIS C#2012脚本任务在从SQL Server代理运行时引用WinSCPnet.dll失败;调用的目标已引发异常";
我有一个SSIS包(创建于VS2013),其中包含一个C#2012脚本任务 脚本任务的任务是使用WinSCP.NET程序集从SFTP服务器下载文件,并将其放置在我的服务器上(Windows server 2012 R2和SQL server 2014) 当我在我的开发机器上运行包时,它运行良好,但是当我部署到服务器时,我的包在此任务中失败,并显示错误消息 调用的目标已引发异常Sql server SSIS C#2012脚本任务在从SQL Server代理运行时引用WinSCPnet.dll失败;调用的目标已引发异常";,sql-server,visual-studio-2012,ssis,winscp,winscp-net,Sql Server,Visual Studio 2012,Ssis,Winscp,Winscp Net,我有一个SSIS包(创建于VS2013),其中包含一个C#2012脚本任务 脚本任务的任务是使用WinSCP.NET程序集从SFTP服务器下载文件,并将其放置在我的服务器上(Windows server 2012 R2和SQL server 2014) 当我在我的开发机器上运行包时,它运行良好,但是当我部署到服务器时,我的包在此任务中失败,并显示错误消息 调用的目标已引发异常 我已经做了一些挖掘,它似乎与对WinSCPnet.dll的引用有关。您需要在全局程序集缓存中安装WinSCPnet.d
我已经做了一些挖掘,它似乎与对
WinSCPnet.dll
的引用有关。您需要在全局程序集缓存中安装WinSCPnet.dll,以便SSI获取此依赖项,有关详细信息,请参阅此。您可以使用以下步骤在GAC中安装DLL,有关详细信息,请参阅:
try
…catch
块捕获错误,如的示例所示
如果无法轻松访问内部异常,请检查WinSCP会话日志和调试日志文件(,)。如果这些文件甚至没有创建,根本原因可能是加载WinSCPnet.dll
程序集。看
安装总成以允许其装载包括在: 安装 首先,您需要安装。不要使用NuGet包。1 您还需要添加或允许加载程序集
GAC的安装包括: 安装到GAC 在特殊情况下,您可能需要将程序集安装到全局程序集缓存(GAC)中,尤其是从中使用它 将程序集安装到GAC时,您需要 在开发机器上 要将程序集安装到开发机器上的GAC中,即已安装的程序集,请使用以下命令:
gacutil.exe/i WinSCPnet.dll
Windows SDK随Microsoft Visual Studio一起提供。您也可以单独安装它
对您的.NET framework版本使用正确的gacutil.exe
:
- 对于.NET framework 4.0或更新版本,请使用Windows SDK 7.1(或更新版本)中的
:gacutil
李>C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.1\bin\gacutil.exe
- 对于.NET framework 3.5,请使用Windows SDK 6.0中的
:gacutil
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v6.0A\Bin\gacutil.exe
- Windows Installer,通过创建
包李>.msi
- 支持安装到GAC的任何其他安装程序系统,例如:李>
- 。PowerShell示例:
需要指定DLL的绝对路径,否则上述方法将失败(失败的唯一指示将发送到Windows事件日志)添加类型-AssemblyName“System.EnterpriseServices” $publish=新对象System.EnterpriseServices.Internal.publish $publish.GacInstall(“WinSCPnet.dll”)
如果您已经注册了相应的Dll,并且仍然收到此错误,并且您正在传入包范围内的变量,请确保将它们添加到脚本任务中的“ReadOnlyVariables”
右键单击任务并单击“编辑…”,然后单击“ReadOnlyVariables”属性上的“…”,并添加脚本中引用的变量。如果GAC中没有.dll,该包是否会停止在Visual Studio中运行?我刚刚在服务器上安装了gacutil并运行了“/l WinSCPnet”命令,结果表明.dll已经安装在GAC上,所以问题一定是其他原因