фон
Зависимость Dll не может быть загружена. Как читать fuslogvw?
Я делаю программу в C#, который использует по умолчанию Kinect Fusion демо для 3D сканирования в. Я добавил в эту программу много разных вещей, и я почти закончил. Он отлично работает благодаря отладке VS2013. Я также создал установщик, но когда я запускаю установленное приложение, я получаю некоторые ошибки, которые я укажу здесь ниже. Я использую японскую версию Windows (8.1 64 бит), что означает, что мне нужно перевести все ошибки, которые мне показывают. Это означает, что ошибки, которые я показываю здесь, могут быть не на 100% логическими или правильными. Я также не очень опытен с C#, поэтому я мог бы не заметить некоторые очень простые вещи здесь. Поэтому, пожалуйста, не стесняйтесь задавать любые вопросы. Я мог бы быть так, потому что, поскольку я не слишком много знаю об этом, я мог бы пропустить что-то очень простое для кого-то более опытного.
Просто немного больше информации о программе:
- Это активная платформа решение x64 (он до сих пор получает установлен в x86, не уверен, если это имеет значение);
- Перед запуском требуется доступ администратора;
- В «Программные файлы (x86)» с таким же названием (3D-Scanner) есть другой каталог, который содержит другое приложение, необходимое для удаления пола. Может быть, это беспорядок с поиском/поиском возможностей? Мой первоначальный план состоял в том, чтобы они пошли на одну и ту же карту, но система создает две одинаковые карты;
- По умолчанию программа Kinect Fusion, которую я использую, - 64 бит. У меня были некоторые проблемы с этим раньше, так как мое приложение не смогло создать установщик с 64-разрядной ссылкой в виде 32-битного проекта. Я переключил его на 64-битный проект, и установщик, похоже, работает нормально (за исключением отсутствующей ссылки dll).
Ошибки
Когда происходит сбой приложения, и я начинаю ее отладки с VS2013 я получаю следующую ошибку:
An unhandled exception of type 'System.IO.FileLoadException' occurred in PresentationCore.dll
Additional information:
file or assembly 'Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35', or one of its dependencies could not be loaded.
Manifest definition of the found assembly does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Когда я открываю его в VS2013 я получаю сообщение «Стек вызовов содержит только внешний код». Когда я отключил «Just My Code», мне в основном показали какой-то машинный код или что-то еще. Я не думаю, что это было очень важно, поэтому я не стану его здесь. Если вам нужно увидеть этот код, пожалуйста, сообщите мне, и я отправлю его здесь.
указан как «Call Stack с внешним кодом» (я должен использовать изображение, поскольку стек вызов не копирования состояния) следующий:
Что я попытался
Ну, после некоторого чтения я, конечно же, обнаружил, что получаю эту ошибку из-за того, что в программе отсутствует ссылка/зависимость. Это отчасти странно для меня, поскольку он работает в отладке. В любом случае я попытался изложить и попытаться найти то, что было, что мне не хватало. Я использовал dependency walker в файле, чтобы узнать, что он принесет, но я не мог многое сделать. Это был такой огромный объем данных, и я не знаю, что я ищу.
Итак, я выстрелил Fuslogvw.exe, чтобы увидеть, могу ли я найти ошибки. Это, безусловно, приблизило меня.Результат кажется намного более логичным, но я до сих пор не знаю, что я ищу. Еще раз обратите внимание, что, поскольку я работаю над японской системой, мне пришлось перевести эти журналы, поэтому журналы выглядят немного. Вот выход для из DLL Microsoft.Kinect.Fusion
(который является один я предполагаю, что вызывает проблемы) на работает отладочной версии программы:
*** Assembly bind log entry (2015/08/24 @ 10:38:40) ***
We were successful in the operation.
Bind Result:. Hr = 0x0 I The operation completed successfully.
Assembly manager to read from: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll
It is running under the executable file. C: \ Users \ bono \ Documents \ Visual Studio 2013 \ Projects \ 3D-Scanner \ 3D-Scanner \ bin \ x64 \ Release \ 3D-Scanner.vshost.exe
--- Detailed error log is as follows.
=== Pre-bind state information ===
Log: DisplayName = Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
(Fully-specified)
Log: Appbase = file: /// C:/Users/bono/documents/visual studio 2013/Projects/3D-Scanner/3D-Scanner/bin/x64/Release/
Log: Initial PrivatePath = NULL
Log: Dynamic Base = NULL
Log: Cache Base = NULL
Log: AppName = 3D-Scanner.vshost.exe
the calling assembly: 3D-Scanner, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null
===
Log: This bind starts in read context of default.
Log: The application configuration file C: I use the \ Users \ bono \ documents \ visual studio 2013 \ Projects \ 3D-Scanner \ 3D-Scanner \ bin \ x64 \ Release \ 3D-Scanner.vshost.exe.Config.
Log: I use the host configuration file.
Log: C: I use the computer configuration file from the \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config.
Log: reference after policy: Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
Log: I failed to GAC look up.
Log: A new URL file: /// C:/Users/bono/documents/visual studio 2013/Projects/3D-Scanner/3D-Scanner/bin/x64/Release/Microsoft.Kinect.Fusion.DLL and trying to download You.
Log: I succeeded in downloading the assembly. The next file you are trying to set up: C: \ Users \ bono \ documents \ visual studio 2013 \ Projects \ 3D-Scanner \ 3D-Scanner \ bin \ x64 \ Release \ Microsoft.Kinect.Fusion.dll
Log: I went into the setup phase of execution from the source.
Log: assembly name Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, is PublicKeyToken = 31bf3856ad364e35.
Log: I succeeded to bind. C: it will return the \ Users \ bono \ documents \ visual studio 2013 \ Projects \ 3D-Scanner \ 3D-Scanner \ bin \ assembly from x64 \ Release \ Microsoft.Kinect.Fusion.dll.
Error: the assembly has been loaded in the default read context.
Вот это версия нерабочей установлена версия программы:
*** Assembly bind log entry (2015/08/24 @ 10:34:17) ***
It failed in operation.
Bind Result:. Hr = 0x80131040 but there is no description.
Assembly manager to read from: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll
It is running under the executable file. C: \ Program Files (x86) \ 3D-Scanner \ 3D-Scanner \ 3D-Scanner.exe
--- Detailed error log is as follows.
=== Pre-bind state information ===
Log: DisplayName = Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
(Fully-specified)
Log: Appbase = file: /// C:/Program Files (x86)/3D-Scanner/3D-Scanner/
Log: Initial PrivatePath = NULL
Log: Dynamic Base = NULL
Log: Cache Base = NULL
Log: AppName = 3D-Scanner.exe
the calling assembly: 3D-Scanner, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null
===
Log: This bind starts in read context of default.
Log: The application configuration file C: I use the \ Program Files (x86) \ 3D-Scanner \ 3D-Scanner \ 3D-Scanner.exe.Config.
Log: I use the host configuration file.
Log: C: I use the computer configuration file from the \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config.
Log: reference after policy: Microsoft.Kinect.Fusion, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
Log: I failed to GAC look up.
Log: A new URL file: /// C:/Program Files I am trying to download the (x86) /3D-Scanner/3D-Scanner/Microsoft.Kinect.Fusion.DLL.
Log: I succeeded in downloading the assembly. The next file you are trying to set up: C: \ Program Files (x86) \ 3D-Scanner \ 3D-Scanner \ Microsoft.Kinect.Fusion.dll
Log: I went into the setup phase of execution from the source.
Log: assembly name Microsoft.Kinect.Fusion, Version = 0.0.0.0, Culture = neutral, is PublicKeyToken = null.
Warning: The results of the comparison of the assembly name, mismatch of Major Version found.
Error: assembly references, it did not match the found assembly definition.
Error: set-up phase of execution from the source failed (hr = 0x80131040).
Error: Could not complete the setup of assembly (hr = 0x80131040). Survey it was canceled.
Я думаю, что недостающая информация находится где-то там, но я не знаю, как сделать смысл. Я был бы признателен за любую помощь, когда дело доходит до сбора полезной информации.
Дополнительная информация
Я не уверен, если это абсолютно необходимо, но я думал, что это может быть стоит, чтобы показать мои файлы программы установки. Возможно, я пропустил, включая что-то там, которое вызывает эту недостающую ссылку на dll. Я просто использую все доступные файлы (насколько мне известно) в качестве файлов назначения, но я могу что-то упустить.
Какая версия Microsoft.Kinect.Fusion.dll доступна в установленном пути. Похоже, что существует несоответствие версии. – Taleeb
@Taleeb Хм, я думаю, почему-то это может быть «0.0.0.0» (я предполагаю, что могу проверить через: properties -> most right tab -> File version?). – Bono
Да - версия, указанная в журналах, также равна 0.0.0.0 (в то время как она ожидает версию 2.0.0.0). Лично я понятия не имею о Microsoft.Kinect.Fusion ... но вы можете скопировать dll из рабочей среды в нерабочую среду - это, надеюсь, решит вашу проблему. – Taleeb