WPF应用程序崩溃与XamlParseException和System.IO.FileNotFoundException?

时间:2014-10-31 10:09:01

标签: c# .net wpf

我部署了我的WPF(Windows Presentation Foundation)应用程序,它使用.Net Framework 4.5构建为32bit应用程序。 我在客户端计算机上运行应用程序(Windows 7 64bit)。此计算机已安装.Net Framework 4.5Visual 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 for asyn / await methods。

有人可以告诉我这个问题吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

错误消息:

  

无法加载文件或程序集“CPPWrapper.dll”或其依赖项之一。找不到指定的模块。

表示无法加载引用的程序集“CPPWrapper.dll”。通常这意味着该文件与可执行文件或GAC不在同一目录中,或者预期和实际版本不同。如果缺少“CPPWrapper.dll”的依赖程序集,也会出现这种情况。

给出名称,程序集很可能是C ++包装器程序集。这意味着它可能依赖于安装的外部库或框架文件(甚至可能是不同的处理器体系结构)。

分析依赖关系相关问题的有用工具是Fusion Log Viewer

答案 1 :(得分:0)

今天,我尝试安装更多2个组件:

  1. Visual Studio 2010的Visual C ++可再发行软件包
  2. Visual Studio 2012的Visual C ++ Redistributable Packages
  3. 实际上,这个应用程序自2010年开始使用VS 2010开始开发。然后我更新了使用VS 2012的项目,现在是VS 2013.

    我很高兴这种方式可以解决我的问题,但有人可以解释我发生了什么?