C#: не удалось загрузить файл или сборку 'OpenPop, версия =2.0.4.369, культура = нейтральная, PublicKeyToken=null' или одна из ее зависимостей
Я пытаюсь использовать OpenPop.NET для доступа к учетной записи Gmail, однако я получаю сообщение об ошибке ниже даже с базовым кодом тестирования.
Ошибка: System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---> System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'OpenPop, версия =2.0.4.369, культура = нейтральная, PublicKeyToken=null' или одна из ее зависимостей. Система не может найти указанный файл. Имя файла: 'OpenPop, версия =2.0.4.369, культура = нейтральная, PublicKeyToken=null' в ST_1694f4bcdf2a4068ae871201a2216457.csproj.ScriptMain.Main ()
WRN: регистрация привязки сборки выключена. Чтобы включить ведение журнала ошибок привязки сборки, задайте для параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) значение 1. Примечание. С журналированием ошибок привязки сборки связано некоторое снижение производительности. Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].
--- Конец внутренней трассировки стека исключений --- в System.RuntimeMethodHandle._InvokeMethodFast(Объектная цель, аргументы Object[], SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) в System.Reflection.RuntimeMethodInfo.InokeAgnOF, Связыватель Binder, параметры Object[], культура CultureInfo, логическое skipVisibilityChecks) в System.Reflection.RuntimeMethodInfo.Invoke(объект obj, BindingFlags invokeAttr, связыватель Binder, параметры Object[], CultureInfo culture) в System.RuntimeType.InvokeMember(System.RuntimeType.InvokeMember (, BindingFlags bindingFlags, связыватель связывателя, объектная привязка, объект Object] предоставленные арги, модификаторы ParameterModifier [], культура CultureInfo, строка [] namedParams) в Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
Я пытаюсь сделать это в пакете служб SSIS в SQL Server Business Intelligence Development Studio 2008 на компьютере под управлением Windows 7 с платформой.NET Framework 3.5 и 4. В 3.5 встроены как библиотека OpenPop, так и задача сценария, которая ссылается на него. Я исследовал это в течение нескольких дней, но не смог найти ничего, что могло бы это исправить. Я попытался перекомпилировать dll OpenPop из исходного кода и удалить и повторно добавить ссылку несколько раз.
Код, с которым я сейчас работаю, размещен ниже:
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;
Заранее спасибо.
2 ответа
Я тоже столкнулся с этой проблемой, и решение на самом деле довольно простое. Вы должны установить ссылочную сборку в GAC сервера, на котором вы запускаете пакет.
1) Убедитесь, что сборка подписана, если вы создали свою сборку, подпишите ее.
2) Установите DLL в GAC, используя gacutil.exe
из SDK инструментов Visual Studio. Для получения дополнительной информации см. Как: установить сборку в глобальный кэш сборок.
3) Ссылка на ту же DLL из вашей задачи скрипта
Вуаля, это должно прекрасно работать сейчас!
Установка вашей DLL в GAC(глобальный кеш сборок)
1) Командная строка Visual Studio => Запуск от имени администратора
2)gacutil /i "путь к файлу dll"
3) см. Сборку на C:\Windows\system32\
Это также решит отсутствие DLL или "Не удалось загрузить файл или сборку" в задаче "Сценарий служб SSIS".