代码之家  ›  专栏  ›  技术社区  ›  ProfK

为什么要进行此调试。是否跳过断言?

  •  3
  • ProfK  · 技术社区  · 8 年前

    我有以下代码:

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

    然而 Debug.Assert 该行显示为灰色,当我将鼠标悬停在该行上时,会收到以下消息:

    跳过方法调用。编译器不会生成方法 调用,因为方法是有条件的,或者是不带条件的部分方法 实施

    我的IDE在 Debug 模式,我看不到其他异常。为什么跳过此断言?我不太关心 OrganizationId 为空,因为它标记为 Required 在模型上,但我担心 调试。明确肯定 正在跳过。

    1 回复  |  直到 8 年前
        1
  •  3
  •   M.kazem Akhgary    8 年前

    调试。Assert用此属性标记。

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

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

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

    为了修复转到项目设置、构建部分的此问题,请确保将配置设置为调试。然后勾选选项“定义调试常量”。