我写了一个WPF应用程序来复制文件等。由于合并pdf的原因,我需要将我的应用制作为x64。只要编译为x86,该应用程序就可以正常工作。当我编译x64时,它可以在Visual Studio中运行,但是在将其安装到使用64位Windows的计算机或其他任何计算机上后,它会失败。
在编译我的应用程序时,我使用“任何CPU”并禁用“首选32位”。
安装文件是使用Visual Studio Installer创建的。
启动已安装的应用程序时,没有任何反应。
到目前为止,我已经检查了所有引用的dll-s是否都编译为“任何CPU”。
如何调试我的情况。
事件日志显示:
说明:由于未处理的异常,进程已终止。
异常信息:System.UnauthorizedAccessException
故障模块名称:KERNELBASE.dll,版本:6.1.7601.24231, 时间戳:0x5b6db5dd
异常代码:0xe0434352
故障偏移量:0x000000000001a06d
故障进程ID:0xd54
故障模块路径:C:\ Windows \ system32 \ KERNELBASE.dll
答案 0 :(得分:1)
在汉斯·帕桑特(Hans Passant)指出正确的方向之后,我设法解决了问题。
在我的应用程序中,我忘记在App.xaml.cs中包含try catch语句。这样做之后,我发现了一个异常,该异常表明对应用程序中某个文件夹的访问被拒绝。 我犯的错误是试图在安装位置(c:\ ProgramFiles ...)创建一个文件夹,后来我发现这不是一个好习惯。出于某种原因,x86编译的应用程序设法看到此错误,仅将这些文件夹重定向到虚拟存储位置,就不会打扰您。但是编译为x64的应用程序会引发异常。
找到缺陷后,我现在只需要将文件夹放置在AppData中的其他位置即可。
答案 1 :(得分:0)
以管理员身份启动Visual Studio