0

我有一个使用 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 位。

4

1 回答 1

0

您的应用程序的 Visual Studio 的 vshost 很可能是在特定版本中构建的,而调试器无法弄清楚,因为调试器必须与它正在调试的 exe 具有相同的位风格(以及所有它的程序集)。

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

这只是一个理论,我目前没有足够的代表来评论您的原始帖子;因此,如果您发现此内容不正确,请忽略。

于 2013-09-25T03:55:23.667 回答