Система.ИО.FileNotFoundException: не удалось загрузить файл или сборку "X" или одну из ее зависимостей при развертывании приложения

у меня странная проблема с развертыванием приложения, которое ссылается на сборку, написанную на управляемом c++.

Я создал сборку X, скомпилировал ее и ссылался на нее в exe-файле, называемом Starter.

стартер.exe запускается нормально на локальном компьютере. Однако, когда я копирую все содержимое папки отладки starter в виртуальную машину и пытаюсь запустить ее там, она аварийно завершает работу со следующим исключением:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or 
assembly 'X' or one of its dependencies. The specified module could not be found.

Это не имеет никакого смысл для меня, потому что X находится прямо в той же папке, что и Starter.исполняемый.

что может быть причиной этой проблемы?

обновление

Я изучил зависимости в Reflector на целевой машине, и он смог найти файлы для всех из них.

Я также изменил конфигурации на x86 / win32 для всех проектов.

обновление

вот журналы из журнала Fusion (местоположение: C:FusionLogDefaultStarter.exeX, Version=1.0.4538.22813, Culture=нейтральный, PublicKeyToken=null.HTM):

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:WINDOWSMicrosoft.NETFrameworkv4.0.30319clr.dll
Running under executable  C:Documents and SettingsAdministratorDesktoptmpk;kStarter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827Administrator
LOG: DisplayName = X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:Documents and SettingsAdministratorDesktoptmpk;kStarter.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:WINDOWSMicrosoft.NETFrameworkv4.0.30319configmachine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/X.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:Documents and SettingsAdministratorDesktoptmpk;kX.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
LOG: Binding succeeds. Returns assembly from C:Documents and SettingsAdministratorDesktoptmpk;kX.dll.
LOG: Assembly is loaded in default load context.

единственные ошибки в C:FusionLogNativeImageStarter - ... каталог EXE-файл:

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:WINDOWSMicrosoft.NETFrameworkv4.0.30319clr.dll
Running under executable  C:Documents and SettingsAdministratorDesktoptmpk;kStarter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827Administrator
LOG: DisplayName = BookmarkWiz.Kernel, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Start binding of native image X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null.
WRN: No matching native image found.
LOG: IL assembly loaded from C:Documents and SettingsAdministratorDesktoptmpk;kX.dll.

Я не могу подписать сборку, так как он ссылается на несколько других сборок, которые не подписаны

3 ответов


... Не удалось загрузить файл или сборку 'X' или один из его зависимостей ...

скорее всего, он не загружает другую зависимость.

вы можете попробовать проверить зависимости с помощью ходока зависимостей.

то есть:http://www.dependencywalker.com/

также проверьте конфигурацию сборки (x86 / 64)

изменить: У меня также была эта проблема однажды, когда я копировал DLL в zip из "ненадежный" сетевой ресурс. Файл был заблокирован Windows и FileNotFoundException было вызвано.

смотрите здесь: обнаружены библиотеки DLL, которые из интернета и "заблокированы" CASPOL


Я решил эту проблему, переименовав DLL. Библиотека DLL была переименована вручную при загрузке в общее расположение (к имени файла был добавлен номер версии). Удаление номера версии из загруженного файла разрешило проблему.


У меня была та же проблема. Для меня это помогло удалить .vs каталог в папке проекта.