我在两台独立的64位计算机(都运行VS2012)上重现了这个问题。方法如下:创建一个没有任何内容的新控制台应用程序但是:
using System.Diagnostics;
namespace ConsoleApplication2
{ class Program
{ static void Main(string[] args)
{
Debug.Assert(false);
}
}
}
然后,打开项目设置,导航到构建 - >一般 - >平台目标:,然后选择x64(或者,选择“任何CPU”,并禁用“首选32位”设置),然后运行程序。
出现Assertion Failed
对话框,但点击“重试”不会破坏代码,而只是打开一个“无符号加载”窗口,显示“跳过符号加载”(见下面的屏幕截图)。
如果我将平台目标更改为x86(或重新启用“首选32位”设置),则Asserts将再次开始正常工作。
注意:
所以我的问题是,如何让Debug Assertions进入64位应用程序中的代码?(或者为什么禁用“Prefer 32-bit”设置会破坏它?)