Dot-Net
Debug.Assert(false) 不會在 win8 Metro 應用程序中觸發
我注意到 Debug.Assert 不會在 Metro 應用程序中觸發,但是,如果項目是傳統項目,如 Console 或 WinForm,它會觸發。是的,我處於調試模式。
是否在 Visual Studio (11 Beta) 中設置不正確?或者 Debug.Assert 打算在 Metro 應用程序中禁用?
我知道在 Metro 應用程序的執行過程中會吞下許多異常,但 Debug.Assert 非常方便,以至於我想不出應該禁用它的原因。
它確實會觸發,請查看“輸出”視窗。它只是不會自動提示您詢問是否要調試器中斷,因此只會繼續執行。
DefaultTraceListener.AssertUIEnabled 屬性為 false。這是一個實現問題,無法在 Metro UI 上顯示消息框。這確實有效,但顯示器切換到桌面,當您希望點擊“否”時,這是非常不可取的。難以解決,毫無疑問在待辦事項列表上。您無法輕鬆地訪問該屬性以將其設置為 true,它無法從元數據中訪問。Filip 的解決方法聽起來還不錯。
似乎是一個錯誤。我會推出自己的斷言方法。就像是:
[Conditional("DEBUG")] public static void Assert(bool condition) { if (!condition) System.Diagnostics.Debugger.Break(); }