Не удалось загрузить файл или сборку "***. Dll" или одну из ее зависимостей
У меня есть эта dll, которую я создал давно и использую для подключения к db определенного программного обеспечения, для которого я разрабатываю. У меня не было проблем более четырех лет и бесчисленных приложений с этой DLL.
Попытка развернуть мое последнее создание, я получаю следующую ошибку:
System.IO.FileNotFoundException: Could not load file or assembly '***.dll' or one of its dependencies. The specified module could not be found.
Итак, для каждой dll, которую я когда-либо писал, я всегда делал приложение простых форм для тестирования этой DLL как раз сам. Запуск этого простого приложения дало ту же ошибку. DLL не загружает и не использует ничего, кроме: System, System.Data, System.XML. Так что, насколько это возможно, я не вижу ничего плохого.
Кстати, все работает на dev-станции. Проблема ограничена станциями развертывания..Net и необходимые перераспределители, так как я все делаю на С++, развернуты и работают.
Запуск FUSLOGVW.exe показал, что все работает нормально.
Запуск depend.exe сказал: Предупреждение: по крайней мере один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в зависимом от задержки модуле.
Я уже пробовал переписывать все это. Это дало те же результаты.
Кто-нибудь узнает?
редактирует
Вот общее сообщение об ошибке:
See the end of this message for details on invoking \"
just-in-time (JIT) debugging instead of this dialog box.\"
************** Exception Text **************\"
System.IO.FileNotFoundException: Could not load file or assembly 'connectionTo.dll' or one of its dependencies. The specified module could not be found.\"
File name: 'connectionToJobboss32.dll'\"
at TESTConnection.Form1.button1_Click(Object sender, EventArgs e)\"
at System.Windows.Forms.Control.OnClick(EventArgs e)\"
at System.Windows.Forms.Button.OnClick(EventArgs e)\"
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)\"
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\"
at System.Windows.Forms.Control.WndProc(Message& m)\"
at System.Windows.Forms.ButtonBase.WndProc(Message& m)\"
at System.Windows.Forms.Button.WndProc(Message& m)\"
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\"
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\"
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\"
\"
************** Loaded Assemblies **************\"
mscorlib\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)\"
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll\"
----------------------------------------\"
TESTConnection\"
Assembly Version: 1.0.3996.18980\"
Win32 Version: \"
CodeBase: file:///C:/Program%20Files%20(x86)/conn/TESTConnection.exe\"
----------------------------------------\"
System.Windows.Forms\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll\"
----------------------------------------\"
System.Drawing\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll\"
----------------------------------------\"
System\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll\"
----------------------------------------\"
В средстве просмотра событий нет ошибок.
Ответы
Ответ 1
или одна из его зависимостей
В обычной ситуации вы не видите отсутствующую неуправляемую DLL с Fuslogvw.exe. Лучше всего запустить программу SysInternals ProcMon. Вы увидите, что он ищет DLL и не находит его. Режим профиля в Dependency Walker также может отображать его.
Ответ 2
У меня была такая же проблема с dll вчера, и все, на что он ссылался, это System, System.Data и System.Xml. Оказывается, конфигурация сборки для типа платформы не выстраивалась в линию. DLL была построена для x86, а программа, использующая его, была "Any CPU", и поскольку я запускаю машину x64, она запускала программу как x64 и имела проблемы с dll x86. Я не знаю, является ли это вашей проблемой или нет, просто подумал, что я бы назвал это чем-то еще, чтобы проверить.
Ответ 3
У меня была та же проблема. Для меня это было вызвано настройками по умолчанию на локальном сервере IIS на моей машине. Таким образом, простой способ исправить это - использовать встроенный сервер разработки Visual Studio:)
Новые версии IIS на машинах x64 имеют параметр, который не позволяет запускать 32-разрядные приложения по умолчанию. Чтобы включить 32-разрядные приложения в локальном IIS, выберите соответствующий пул приложений в диспетчере IIS, нажмите "Дополнительные настройки" и измените "Включить 32-разрядные приложения" с False на True
Ответ 4
Я столкнулся с этим недавно. Оказалось, что старая DLL была скомпилирована с предыдущей версией (Visual Studio 2008) и ссылалась на эту версию динамических библиотек времени исполнения. Я пытался запустить его в системе, на которой был только .NET 4.0, и я никогда не устанавливал динамические библиотеки времени исполнения. Решение? Я перекомпилировал DLL для связывания статических библиотек времени выполнения.
Проверьте журнал ошибок приложений в средстве просмотра событий (EVENTVWR.EXE). Он даст вам больше информации об ошибке и, вероятно, укажет вам на истинную причину проблемы.
Ответ 5
Недавно я столкнулся с этой проблемой, приложение будет отлично работать на машинах разработчика и выбирать другие машины, но не на недавно установленных компьютерах. Оказалось, что на машинах, на которых он работал, был установлен Runtime Visual С++ 11, в то время как только что установленные машины не были. Добавление Visual С++ 11 Runtime, распространяемое в установщик приложений, устраняет проблему...
Ответ 6
Этот ответ абсолютно не связан с ситуацией OP, и это очень маловероятный сценарий для кого-то еще, но на всякий случай это может помочь кому-то...
В моем случае я получал "Не удалось загрузить файл или сборку" System.Windows.Forms, Version = 4.0.0.0... ", потому что я разобрал и повторно собрал программу, используя ILDAsm.exe и ILAsm.exe. Версия Net Framework/SDK 2. Переключение на ILDAsm.exe и ILAsm.exe из .Net Framework/SDK версии 4 устранило проблему.
(Как ни странно, хотя делать то, что я сделал, может показаться очевидной ошибкой, полученный EXE файл, который не работал, указывает на то, что он нацелился на .Net 4 при проверке с помощью JetBrains dotPeek.)
Ответ 7
У меня была такая же проблема - DLL работала все время, потом мой компьютер разбился, а потом у меня возникла проблема "не удалось загрузить файл или сборку... dll"
Два возможных решения: когда компьютер разбился, могут быть некоторые несогласованные файлы в
C:\Users\<yourUserName>\AppData\Local\Temp\Temporary ASP.NET Files
Удаление этой папки, перекомпиляция и ошибка исчезла.
Как только мне пришлось удалить папку с папками (я прочитал это где-то еще). Разрешить Visual Studio/nuget устанавливать отсутствующие пакеты (или вручную переустанавливать), а затем все будет хорошо.
Ответ 8
1) Скопируйте DLL из "Externals\ffmpeg\bin" в каталог вывода проекта (где исполняемый файл остается);
2) Убедитесь, что ваш проект построен для целевой цели x86 (работает в 32-битном режиме).
Следуйте этой теме для более
Ответ 9
Более простой способ определить, какие зависимости принадлежит родной DLL, - использовать Dependency Walker - http://www.dependencywalker.com/
Я проанализировал собственную DLL и обнаружил, что это зависит от MSVCR120.DLL и MSVCP120.DLL, оба из которых не были установлены на моем промежуточном сервере в каталоге System32. Я установил среду выполнения С++ на моем промежуточном сервере, и проблема была решена.