强制使用AnyCPU构建的C#WinForms应用程序作为32位进程进行调试

时间:2013-09-25 02:50:44

标签: c# debugging x86 64-bit anycpu

我有一个使用AnyCPU的C#项目构建。我们还动态加载当前依赖于32位本机DLL的功能。关闭此功能后,应用程序作为64位应用程序运行得非常愉快。因此,Visual Studio确定应用程序将以64位进程运行。为了强制应用程序作为32位进程运行,我们在主项目上有一个Post Build步骤,它使用CorFlags将其设置为32位。在Visual Studio外部运行应用程序时,这可以正常工作。但是,如果我使用F5调试应用程序,则会收到错误消息,表明我的32/64位不匹配。似乎Visual Studio已确定应用程序可以作为64位进程运行并相应地设置调试器,而不知道我已经运行CorFlags强制它为32位。

有没有办法强制Visual Studio将应用程序调试为32位进程?我想将平台目标保留为AnyCPU,因为第三方组件最终将升级到64位。

1 个答案:

答案 0 :(得分:0)

最有可能Visual Studio的应用程序的vshost是在特定版本中构建的,而调试器无法解决这个问题,因为调试器必须与它调试的exe(以及它的所有程序集)相同。 。

您可以尝试自己运行exe,只需通过Debug菜单附加进程即可。可能会为断点获得更好的结果,但如果没有vshost,它就不会那么冗长。

这只是一个理论,我目前没有足够的代表来评论你原来的帖子;所以如果你发现这个不正确,请忽略。