C#: 无法加载文件或程序集 'OpenPop, Version=2.0.4.369, Culture=neutral, PublicKeyToken=null' 或其依赖项

3
我尝试使用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” 文件名: “OpenPop,Version=2.0.4.369,Culture=neutral,PublicKeyToken=null” 在 ST_1694f4bcdf2a4068ae871201a2216457.csproj.ScriptMain.Main()
警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。 注意:启用程序集绑定故障日志记录会带来一些性能损失。 要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]。
我的做法是在SQL Server Business Intelligence Development Studio 2008中的SSIS包中运行此代码,我使用的是Windows 7机器,装有.NET Framework 3.5和4. 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;

Thank you in advance.

2个回答

7
我也遇到了这个问题,解决方案其实很简单。您需要将引用的程序集安装到运行包的服务器的全局程序集缓存 (GAC) 中。
1) 验证程序集是否已签名,如果是自己创建的程序集,请对其进行签名。
2) 使用 Visual Studio 的 SDK 工具中的 gacutil.exe 将 DLL 安装到 GAC。有关更多信息,请参见如何:将程序集安装到全局程序集缓存
3) 从脚本任务中引用相同的 DLL。
现在,它应该可以完美地工作了!

注意:Gacutil.exe仅用于开发目的,不应将生产程序集安装到全局程序集缓存中。 - toha

1

将DLL安装到全局程序集缓存(GAC)

1)Visual Studio命令提示符 => 以管理员身份运行

2)gacutil /i "dll文件路径"

3)在C:\ Windows \ system32中查看程序集

这也可以解决SSIS脚本任务中的dll缺失或“无法加载文件或程序集”的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接