我正在使用 Visual Studio 2008,C#。我尝试使用编辑并继续(在调试时编辑代码),并得到这个异常:
“不允许更改 64 位应用程序”
这是为什么?有解决方法吗?
我正在使用 Visual Studio 2008,C#。我尝试使用编辑并继续(在调试时编辑代码),并得到这个异常:
“不允许更改 64 位应用程序”
这是为什么?有解决方法吗?
CLR 级别的 64 位应用程序不支持编辑并继续,因此 Visual Studio 也无法实现它。
解决此问题的最简单方法是将应用程序定位到 x86 芯片。这将导致它作为 32 位进程在 Wow64 模式下运行,因此能够进行 ENC。您可以通过执行以下操作来做到这一点
就个人而言,我真正想要的是停止并编辑而不是编辑并继续。
所以我只是关闭工具/选项/调试/编辑并继续。
这样做可以防止那个讨厌的对话框纠缠我一开始就不想要的缺失功能:-)
就像 jcopenha 说的那样,x64 上还没有编辑和继续。当前版本的 64 位 CLR 不支持它。但是,有一个解决方法。
你可以在Bug Babble post上找到它。
您需要使用 x86 的目标 CPU 编译托管程序集。这将导致使用 32 位 CLR 而不是 64 位 CLR。
对于 VB 项目,右键单击项目并转到 Properties/Compile/Advanced Compile Options/Target CPU 并将其设置为“x86”。对于 C# 项目,右键单击该项目并转到 Properites/Build/Platform Target 并将其设置为“x86”。
希望能帮助到你。
Visual Studio 2013 将支持 64 位代码的“编辑并继续”功能。
编辑和继续功能还没有在 x64 中实现。我还没有听说他们计划什么时候做的任何更新。
我在 MS Visual C# Express 2010 中遇到了同样的错误消息。不过这很有趣,因为该应用程序绝对配置为 x86 项目!
最后,我的 .csproj 文件中缺少以下行:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
...
<PlatformTarget>x86</PlatformTarget>
...
</PropertyGroup>
我不知道为什么它丢失了......我猜 MS Visual C# Express 2010 不是没有错误的;)
当目标 CPU 设置为“任何 CPU”时,它将在 32 位窗口上作为 32 位应用程序运行,在 64 位窗口上作为 64 位应用程序运行。但是,Visual Studio 不允许 64 位应用程序的“编辑并继续”功能。
为了在 64 位机器上“流畅地”调试,我们可以:
a) 将“目标 CPU”设置为“任何 CPU”,但选中“首选 32 位”框。
b) 或者,将“目标 CPU”设置为“x86”
非常重要:这两个选项都需要取消选中“启用优化”框。
不幸的是,64 位不支持编辑并继续。事实上,如果您在调试 64 位应用程序时尝试使用“编辑并继续”,则会收到以下错误消息:“不允许更改 64 位应用程序”许多用户可能没有意识到,默认情况下,当您创建Visual Studio 2008 中的 C# 或 VB 项目,项目的“平台”设置为“任何 CPU”。这意味着如果您在 32 位操作系统上运行应用程序,您的应用程序将作为 32 位进程运行,同样,如果您在 64 位操作系统上运行应用程序,则应用程序将是 64 位的。“任何 CPU”的后果是,当您尝试在 64 位操作系统上调试应用程序时,您将无法使用“编辑并继续”功能。
但是,有一种解决方法。在开发过程中,您可以将项目的平台设置为 32 位,这意味着您的应用程序即使在 64 位操作系统上也将作为 32 位进程运行。这被称为 WOW64 或“Windows On Windows”,基本上意味着您可以在 64 位操作系统上运行 32 位应用程序。
那么,如何将项目的平台设置为 32 位?那么,您需要使用 Visual Studio 配置管理器创建一个 32 位平台。这是一个简短的演练。
首先,从 Build –> Configuration Manager 打开“Configuration Manager”对话框。配置管理器对话框如下所示。