2010-01-06 115 views
5

我使用Windows 7的x64版本。我的应用程序使用某些无法在x64上下文中加载的COM服务器(通常为本地x86 COM服务器)。所以我决定使用WOW作为x86应用程序运行它,所以我将平台目标设置为x86。在VS2008中调试Windows x64上的x86 .NET应用程序

但是,当我尝试调试它时,Visual Studio 2008调试器开始显示所有源文件的消息,例如“源文件不同....”。这种行为的原因是什么?这个问题在那里出生"The source file is different...." message in Visual Studio 2008 is result of debugging x32 apps on x64 Windows

更新:我打扫的解决方案,重建的解决方案,去除OBJ,仓等文件夹,重新启动电脑,重新安装Visual Studio中......那么,还有什么可能是这个问题?

Update2:如果您创建新的Windows应用程序项目并将目标平台更改为x86,则会看到此问题。但是如果从项目中删除Settings1.settings,麻烦将被消除!。任何想法?

UPDATE3http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/bc297668-65b4-46e8-969e-c7a6340d33b6

+0

您是否清理了项目的输出文件夹并检查了构建真正成功的构建日志? – 2010-01-06 17:16:21

+0

我回答了问题的描述。 – 2010-01-06 17:21:33

+0

如果您将目标平台切换回到x64,调试将再次运行? – 2010-01-06 17:33:00

回答

4

默认情况下,Windows 7为VS 2008设置Windows Xp sp 3兼容模式。将兼容性更改为Windows Vista SP2模式已解决了麻烦。

+0

对于我来说,这也适用于Visual Studio 2010。 – andnil 2010-08-31 06:53:56

+0

这工作对我来说,但我选择了Windows 7模式谢谢 – Xenon 2012-01-03 08:39:56

4

你所得到的错误信息是无关的调试WOW64位应用程序。这里甚至没有什么问题,因为Visual Studio在WOW64中运行了一个32位的进程。因此,而不是x64 - > x86,实际上是在执行x86 - > x86调试会话。

这里发生的事情是,Visual Studio正在从PDB中读取源文件的校验和,并且它与您用来调试应用程序的文件的校验和不匹配。造成这种情况的最可能的原因是

  • 已过期PDB的
  • 使用不正确的源文件。这比在分支场景中您可能会轻易获取错误版本的文件更常见。

我通常通过这个调试的方法是

  • 关闭VS并手动删除所有的二进制文件和二进制目录
  • 重启VS,重建
  • 关闭VS
  • 重新启动VS和附加到正在运行的项目而不打开解决方案
  • 然后手动打开文件
+0

查看我的更新2 – 2010-01-11 09:55:28

1

您可能还会检查x86构建类型。当您创建它时,您可能无法从默认构建中复制设置,因此当您运行应用程序时,您的代码不会构建。

调出解决方案属性并检查配置属性\配置页面。然后确保所有项目都在Build下检查您正在使用的配置/平台组合。

+0

确实,在当前配置中排除构建的项目对我来说似乎是一个常见的错误。但是,彻底清除解决方案(如OP所做的)应该让你注意到这一点? – 2010-01-07 09:59:05

+0

是的。但他忽略了他可能没有看到这种可能性的编译器错误/构建消息。另外,如果他要告诉它在清理干净后明确建立,他也不会看到这个问题。 – 2010-01-07 16:19:15

+0

我还没有制作x86“构建类型”,我刚刚将项目属性的构建页面上的Platform目标从Any CPU更改为x64。就这些。 – 2010-01-11 09:42:26

相关问题