我正试图使用OpenPop.NET访问gmail帐户,但即使使用基本的测试代码,我也会收到下面的错误消息。
错误:System.Reflection.TargetInvocationException:调用的目标引发了异常。--->System.IO.FileNotFoundException:无法加载文件或程序集"OpenPop,Version=2.0.4.369,Culture=neutral,PublicKeyToken=null"或其依赖项之一。系统找不到指定的文件。文件名:'OpenPop,Version=2.0.4.369,Culture=neutral,PublicKeyToken=null'位于ST_1694f4bcdf2a4068ae871201a2216457.csproj.ScriptMain.Main()
警告:程序集绑定日志记录已关闭。要启用程序集绑定故障日志记录,请将注册表值[HHKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。注意:程序集绑定失败日志记录会带来一些性能损失。要关闭此功能,请删除注册表值[HHKLM\Software\Microsoft\Fusion!EnableLog]。
---内部异常堆栈跟踪结束---在System.RuntimeMethodHandle_InvokeMethodFast(对象目标,Object[]参数,SignatureStruct&sig,MethodAttributes方法属性,RuntimeTypeHandle typeOwner)位于System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder Binder,Object[]参数,CultureInfo区域性,布尔skipVisibilityChecks)位于System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder Binder,Object[]参数,CultureInfo区域性)位于System.RuntimeType.InvokeMember(字符串名称,BindingFlags BindingFlags,绑定器绑定器,对象目标,Object[]提供的args,ParameterModifier[]修饰符,CultureInfo区域性,String[]namedParams)位于Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
我正试图在SQL Server Business Intelligence Development Studio 2008中的SSIS包中,在装有.NET framework 3.5和4的Windows 7计算机上执行此操作。OpenPop dll和引用它的脚本任务都是在3.5中构建的。我已经研究了几天了,但没有找到任何可以修复它的方法。我已经尝试从源代码重新编译OpenPop dll,并多次删除和重新添加引用。
我目前使用的代码发布在下面:
Pop3Client client = new Pop3Client();
try
{
client.Connect("pop.gmail.com", 995, true);
try
{
client.Authenticate("user@domain.com", "mypassword");
Console.WriteLine("Success");
client.Disconnect();
}
catch
{
Console.WriteLine("Failed to authenticate");
Dts.TaskResult = (int)ScriptResults.Failure;
return;
}
}
catch
{
Console.WriteLine("Failed to connect");
Dts.TaskResult = (int)ScriptResults.Failure;
return;
}
Dts.TaskResult = (int)ScriptResults.Success;
提前谢谢。
我也遇到过这个问题,解决方案实际上很简单。您必须将引用的程序集安装到运行包的服务器的GAC中。
1) 验证程序集是否已签名,如果您创建了自己的程序集,请对其进行签名。
2) 使用Visual Studio SDK工具中的gacutil.exe
将DLL安装到GAC。有关详细信息,请参阅如何:将程序集安装到全局程序集缓存中。
3) 从脚本任务中引用相同的DLL
哇,现在应该可以完美工作了!
将DLL安装到GAC(全局程序集缓存)
1) Visual Studio命令提示符=>以管理员身份运行
2) gautil/i"dll文件路径"
3) 参见C:\Windows\system32\上的程序集
它还将解决SSIS脚本任务中缺少dll或"无法加载文件或程序集"的问题