2014-10-31 237 views
1

我部署了我的WPF(Windows Presentation Foundation)应用程序,它使用.Net Framework 4.5构建为32bit应用程序。 我在客户机上运行应用程序(Windows 7 64bit)。本机安装.Net Framework 4.5Visual C++ Redistributable Packages for Visual Studio 2013。它发射时坠毁。WPF应用程序崩溃XamlParseException和System.IO.FileNotFoundException?

我使用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作为异步/等待方法。

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

非常感谢!

+4

您是否尝试过在应用程序中捕获未处理的异常? – japesu 2014-10-31 10:15:39

+0

你确定你的主窗口的xaml文件是正确的吗? – Keysharpener 2014-10-31 14:43:46

+0

请在上面看到我的更新,谢谢! – TTGroup 2014-11-02 15:17:01

回答

1

错误消息:

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

表示无法加载引用程序集'CPPWrapper.dll'。通常这意味着该文件与可执行文件或GAC中的文件不在同一目录中,或者预期版本和实际版本不同。如果缺少“CPPWrapper.dll”的相关程序集,则也是如此。

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

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

+0

是的,我考虑过这种情况,但DW并不能告诉我确切的问题。 – TTGroup 2014-11-02 15:28:04

+0

我试图在客户机上安装Visual Studio 2013,并且程序工作正常。所以我无法使用Fusion Log Viewer来检测问题。你有什么建议吗?谢谢! – TTGroup 2014-11-03 06:25:47

+1

不,它清楚地表明VS缺少一个安装组件。也许正确的VC++运行时或类似的东西。 – 2014-11-03 07:39:37

0

今天,我试图安装更多的2个组成部分是:

  1. 的Visual C++可再发行的Visual Studio 2010
  2. 的Visual C++可再发行的Visual Studio 2012

其实,这个应用程序包包自2010年起开始使用VS 2010进行开发。然后我更新了使用VS 2012的项目,现在是VS 2013。

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