为什么这个 Debug.Assert 被跳过了?

Why is this Debug.Assert skipped?

我有以下代码:

Debug.Assert(model.OrganizationId != null, "model.OrganizationId != null");
var orgId = model.OrganizationId.Value;

然而 Debug.Assert 行是灰色的,当我将鼠标悬停在它上面时,我收到消息:

Method invocation is skipped. Compiler will not generate method invocation because method is conditional, or is partial method without implementation.

我的 IDE 处于 Debug 模式,我没有发现任何异常。为什么要跳过此断言?我不太关心 OrganizationId 是否为空,因为它在模型上被标记为 Required,但我担心看起来非常正常的 Debug.Assert 被跳过了。

Debug.Assert被标记为这个属性。

[System.Diagnostics.Conditional("DEBUG")]

这意味着当您在项目配置中定义了 "DEBUG" 常量时编译此方法。

请注意,这与发布或调试构建模式无关。但默认情况下,调试配置定义了 "DEBUG" 常量。

为了解决这个问题,请转到您的项目设置、构建部分,确保配置设置为调试。然后勾选选项 "define DEBUG constant".