1

我有一个ClickOnce(C#、WPF、.NET 4.5)应用程序,它在 32 位 Windows 7 下运行并正常工作。它被编译为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

根据这里,我可以强制构建为Win32应用程序,但这是正确的方法吗?该应用程序非常简单,所以我怀疑这应该是必需的。

跟进,关于远程调试:Visual Studio 2012:我可以在远程调试器中启动 .NET 4.5 应用程序(而不仅仅是附加)吗?

我做的第一件事是将两个外部(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 构建中,我检查了Prefer 32-bit这个编译的 exe在 Windows 7 64 位上运行。所以它在一定程度上是成功的。

首选 32 位

4

0 回答 0