C#:无法加载文件或程序集';OpenPop,版本=2.0.4.369,Culture=neutral,Publi

本文关键字:版本 Publi neutral Culture OpenPop 加载 文件 程序集 | 更新日期: 2023-09-27 18:29:58

我正试图使用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;

提前谢谢。

C#:无法加载文件或程序集';OpenPop,版本=2.0.4.369,Culture=neutral,Publi

我也遇到过这个问题,解决方案实际上很简单。您必须将引用的程序集安装到运行包的服务器的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或"无法加载文件或程序集"的问题