C# 我如何包装调试器。很好地断开?

C# 我如何包装调试器。很好地断开?,c#,.net,debugging,C#,.net,Debugging,Debug.Assert显示了一个令人困惑的消息框,但如果条件为false,我希望它只是中断 以下内容很有用,但写起来很枯燥: #if DEBUG if (!condition) Debugger.Break() #endif 因此,我编写了以下函数: public class Util { [Conditional("DEBUG")] public static void Assert(bool condition) { if (!condit

Debug.Assert
显示了一个令人困惑的消息框,但如果
条件
false,我希望它只是中断

以下内容很有用,但写起来很枯燥:

#if DEBUG
    if (!condition) Debugger.Break()
#endif
因此,我编写了以下函数:

public class Util
{
    [Conditional("DEBUG")]
    public static void Assert(bool condition)
    {
        if (!condition) Debugger.Break();
    }
}
它可以工作,但会在函数中中断,而不是在其调用位置中断。如何使我的
Assert
函数像它所包装的
Break
函数一样工作?

是正确的。用属性修饰
Assert
方法将设置
Assert
方法调用的断点

测试程序:

[DebuggerStepThrough]
public static void Assert(bool condition)
{
    if (!condition) Debugger.Break();
}

static void Main(string[] args)
{
    Assert(false); // <-- break point here

    Console.ReadKey();
}
[DebuggerStepThrough]
公共静态无效断言(布尔条件)
{
if(!condition)Debugger.Break();
}
静态void Main(字符串[]参数)
{

Assert(false);//调试->仅启用我的代码

您可以尝试使用DebuggerStepThrough属性标记该方法:可能需要打开选项->调试->仅启用我的代码。@Ripple:可能就是这样!我已经打开了它。这就成功了。将它添加到您的答案中,以便我可以标记它。