3

我正在尝试使用 OpenPop.NET 访问 gmail 帐户,但是即使使用基本测试代码,我也会收到以下错误消息。

错误:System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.IO.FileNotFoundException:无法加载文件或程序集“OpenPop,版本=2.0.4.369,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。文件名:ST_1694f4bcdf2a4068ae871201a2216457.csproj.ScriptMain.Main() 的“OpenPop,版本=2.0.4.369,文化=中性,PublicKeyToken=null”

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

--- 内部异常堆栈跟踪结束 --- System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr , Binder binder, Object[] parameters, CultureInfoculture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfoculture) at System.RuntimeType.InvokeMember(String name , BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符, CultureInfoculture, String[] namedParams) 在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

我正在尝试在具有 .NET 框架 3.5 和 4 的 Windows 7 机器上的 SQL Server Business Intelligence Development Studio 2008 中的 SSIS 包中执行此操作。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;

先感谢您。

4

2 回答 2

7

我也遇到过这个问题,解决方案其实很简单。您必须将引用的程序集安装到运行该软件包的服务器的 GAC。

1)验证程序集是否已签名,如果您创建了自己的程序集,请对其进行签名。

gacutil.exe2) 使用Visual Studio 的 SDK 工具将 DLL 安装到 GAC 。有关详细信息,请参阅如何:将程序集安装到全局程序集缓存中。

3) 从您的脚本任务中引用相同的 DLL

瞧,它现在应该可以完美运行了!

于 2012-04-10T09:16:57.987 回答
1

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

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

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

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

它还将解决 SSIS 脚本任务中缺少 dll 或“无法加载文件或程序集”的问题

于 2015-05-20T13:47:14.397 回答