Приложение WPF аварийно завершено с XamlParseException и System.IO.FileNotFoundException?

1

Я развернул приложение WPF (Windows Presentation Foundation), которое было 32bit как 32bit приложение с использованием.Net Framework 4.5. Я запускаю приложение на клиентском компьютере (Windows 7 64bit). Этот компьютер установил .Net Framework 4.5 и Visual C++ Redistributable Packages for Visual Studio 2013. При запуске он разбился.

Я использую Dependency Walker для его профилирования, а ниже - журнал DW.


Starting profile on 10/31/2014 at 4:58:32 PM

Operating System: Microsoft Windows NT/2000/XP/2003/Vista based Ultimate (64-bit), version 6.01.7601 Service Pack 1
Program Executable: \\tuyetam-pc\users\administrator\desktop\mystic server setup 20141025\mystic server v2.0 alpha (32bit)\MYSTICSERVER.EXE
Program Arguments: 
Starting Directory: \\TUYETAM-PC\Users\Administrator\Desktop\Mystic Server Setup 20141025\Mystic Server v2.0 Alpha (32bit)\
Search Path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

Options Selected:
     Simulate ShellExecute by inserting any App Paths directories into the PATH environment variable.
     Log DllMain calls for process attach and process detach messages.
     Hook the process to gather more detailed dependency information.
     Log LoadLibrary function calls.
     Log GetProcAddress function calls.
     Log first chance exceptions.
     Log debug output messages.
     Use full paths when logging file names.
     Automatically open and profile child processes.
--------------------------------------------------------------------------------

Started "\\tuyetam-pc\users\administrator\desktop\mystic server setup 20141025\mystic server v2.0 alpha (32bit)\MYSTICSERVER.EXE" (process 0xB64) at address 0x000C0000.  Successfully hooked module.
Loaded "c:\windows\syswow64\NTDLL.DLL" at address 0x77E10000.  Successfully hooked module.
Loaded "c:\windows\syswow64\MSCOREE.DLL" at address 0x71E30000.  Successfully hooked module.
Loaded "c:\windows\syswow64\KERNEL32.DLL" at address 0x75800000.  Successfully hooked module.
Loaded "c:\windows\syswow64\KERNELBASE.DLL" at address 0x773A0000.  Successfully hooked module.
DllMain(0x773A0000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\syswow64\KERNELBASE.DLL" called.
DllMain(0x773A0000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\syswow64\KERNELBASE.DLL" returned 1 (0x1).
DllMain(0x75800000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\syswow64\KERNEL32.DLL" called.
DllMain(0x75800000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\syswow64\KERNEL32.DLL" returned 1 (0x1).
Injected "c:\users\administrator\desktop\depends22_x86\DEPENDS.DLL" at address 0x08370000.
DllMain(0x71E30000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\syswow64\MSCOREE.DLL" called.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\users\administrator\desktop\depends22_x86\DEPENDS.DLL" called.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\users\administrator\desktop\depends22_x86\DEPENDS.DLL" returned 1 (0x1).
GetProcAddress(0x75800000 [c:\windows\syswow64\KERNEL32.DLL], "FlsAlloc") called from "c:\windows\syswow64\MSCOREE.DLL" at address 0x71E36F3C and returned 0x75814EE3.

STATUS_STACK_BUFFER_OVERRUN encountered
Entrypoint reached. All implicit modules have been loaded.
Exited "\\tuyetam-pc\users\administrator\desktop\mystic server setup 20141025\mystic server v2.0 alpha (32bit)\MYSTICSERVER.EXE" (process 0xB64) with code -1073740791 (0xC0000409).

Когда я пытаюсь поймать исключение приложения, информация об исключении ниже

The error time: 11/2/2014 10:10 PM
Exception: System.Windows.Markup.XamlParseException: The invocation of the constructor on type 'DVRServerInterface.MainWindow' that matches the specified binding constraints threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'CPPWrapper.dll' or one of its dependencies. The specified module could not be found.
   at DVRServerInterface.MainWindow..ctor()
   --- End of inner exception stack trace ---
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
   at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
   at System.Windows.Application.DoStartup()
   at System.Windows.Application.<.ctor>b__1(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)___   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
   at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
   at System.Windows.Application.DoStartup()
   at System.Windows.Application.<.ctor>b__1(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
InnerException.Message:Could not load file or assembly 'CPPWrapper.dll' or one of its dependencies. The specified module could not be found.

Не то, что когда я пытался установить Visual Studio 2013 на клиентскую машину, а затем программа работала нормально.

И дополнительная информация: Это версия 1.1 моего приложения

  • В предыдущей версии (1.0) я использовал VS 2012 и.Net 4.0, и я развернул успешную версию 1.0.

  • В этой версии (1.1): я обновил весь проект до VS 2013 и использовал.Net 4.5. Значит, я не знаю, как эти шаги вызвали проблему или нет? Мне нужно использовать.Net 4.5 для методов asyn/await.

Кто-нибудь может вызвать у меня проблему?

Большое спасибо!

  • 4
    Вы пытались поймать необработанное исключение в приложении?
  • 0
    Вы уверены, что файл xaml вашего главного окна правильный?
Показать ещё 1 комментарий
Теги:
wpf

2 ответа

1

Сообщение об ошибке:

Не удалось загрузить файл или сборку "CPPWrapper.dll" или одну из его зависимостей. Указанный модуль не может быть найден.

Указывает, что не может загрузить ссылочную сборку "CPPWrapper.dll". Обычно это означает, что файл находится не в том же каталоге, что и исполняемый файл или в GAC, или версии, ожидаемые и фактические, различны. Это также имеет место, если отсутствует зависимая сборка из "CPPWrapper.dll".

Давая имя, сборка, скорее всего, является сборкой C++ обертки. Это означает, что он может зависеть от внешних библиотек или файлов фреймворка (возможно, даже другой архитектуры процессора).

Полезным инструментом для анализа проблем, связанных с зависимостями, является Fusion Log Viewer.

  • 0
    Да, я думал об этом случае, но DW не может показать мне точно проблему.
  • 0
    Я попытался установить Visual Studio 2013 на клиентском компьютере, и программа работала нормально. Поэтому я не могу использовать Fusion Log Viewer для обнаружения проблемы. Есть ли у вас какие-либо предложения для меня. Спасибо!
Показать ещё 6 комментариев
0

Сегодня я попытался установить еще 2 компонента:

  1. Visual C++ Распространяемые пакеты для Visual Studio 2010
  2. Visual C++ Распространяемые пакеты для Visual Studio 2012

Фактически, это приложение начало разработку с 2010 года с VS 2010. И затем я обновил проект для использования VS 2012, а теперь VS 2013.

Я очень счастлив, когда этот способ может решить мою проблему, но кто-то может объяснить мне, что произойдет?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню