我有一个ClickOnce(C#,WPF,.NET 4.5)应用程序,它在Windows 7 32位下运行并运行良好。它被编译为 Any CPU 。
在Windows 7 64位下,我看到ClickOnce开始屏幕,然后没有任何反应(没有错误,没什么明显的)。
为了进行调试,我将EXE文件和所有相关的DLL文件复制到一个目录中。我从那里开始:同样的情况,它在Windows 7 32位下运行,但在Windows 7 64位下没有任何反应。我已经使用“干净”的Windows 7 32位交叉检查,并且它也很好。
.NET 4.5已安装在我测试过的任何计算机上。
如何克服/调试应用程序?我需要做什么才能让它在64位下运行?
APPLICATIONS下的事件日志显示:
Faulting application name: MyApp.exe, version: 0.8.1.13, time stamp: 0x50e807c5
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b8479b
Exception code: 0xe0434352
Fault offset: 0x0000000000009e5d
Faulting process id: 0x1138
Faulting application start time: 0x01cdeeab375b90da
Faulting application path: B:\Debug\MyApp.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: 761e9cba-5a9e-11e2-a573-406186f45b4a
根据here,我可以强制构建Win32应用程序,但这是正确的方法吗?应用程序非常简单,所以我怀疑这应该是必需的。
跟进,关于远程调试: Visual Studio 2012: Can I start a .NET 4.5 application in a remote debugger (and not only attach)?
我做的第一件事就是将两个外部(Syncfusion)DLL文件更新为最新版本。它仍然崩溃,但现在我在事件查看器中得到了一个额外的.NET事件。我认为它可能是“Syncfusion”相关的,但整个跟踪没有显示任何Syncfusion库。
Application: MyApp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException
Stack:
at System.Windows.Automation.Peers.AutomationPeer.ListenerExists(System.Windows.Automation.Peers.AutomationEvents)
at System.Windows.Controls.TabControl.OnSelectionChanged(System.Windows.Controls.SelectionChangedEventArgs)
at System.Windows.Controls.Primitives.Selector+SelectionChanger.End()
at System.Windows.Controls.Primitives.Selector+SelectionChanger.SelectJustThisItem(ItemInfo, Boolean)
at System.Windows.Controls.Primitives.Selector.OnSelectedIndexChanged
接下来,在Visual Studio 2012版本中,我在Windows 7 64位上检查了首选32位,此编译的exe运行。所以这部分是成功的。