Câu hỏi cổ đại nhưng nếu bạn không có người nghe mặc định được xác định, nó sẽ không hiển thị hộp thoại tin nhắn như bình thường. Tôi đã không xác nhận cho dù nó thực sự cháy và chỉ được ăn (tôi nghi ngờ đây là trường hợp) hoặc cho dù nó chỉ không cháy ở tất cả.
Nhưng dù theo cách nào, nó sẽ không hiển thị hộp thoại.
Từ các tài liệu cho DefaultTraceListener
Màn hình hiển thị của hộp tin nhắn cho Khẳng định và Fail phương pháp gọi phụ thuộc vào sự hiện diện của DefaultTraceListener. Nếu DefaultTraceListener không có trong bộ sưu tập Người nghe, hộp thư không được hiển thị.
Các DefaultTraceListener có thể được gỡ bỏ bởi các yếu tố , bởi yếu tố, hoặc bằng cách gọi phương thức rõ ràng trên Listeners tài sản (System.Diagnostics.Trace.Listeners.Clear()).
Bạn có thể kiểm tra thính giả của bạn và nhận được các loại bằng cách sử dụng một số mã như dưới đây:
var listeners = new TraceListener[Debug.Listeners.Count];
Debug.Listeners.CopyTo(listeners, 0);
foreach (var listener in listeners) {
Debug.WriteLine("Name : {0} of type : {1}", listener.Name, listener.GetType());
}
Nếu bạn không có một gọi là "Default", Debug.Assert
âm thầm sẽ thất bại.
Theo như cấu hình đi, điều này sẽ làm việc giả định một người biết lắng nghe tên mặc định có sẵn:
<system.diagnostics>
<trace autoflush="false">
<listeners>
</listeners>
</trace>
</system.diagnostics>
này SẼ làm việc giả định một người biết lắng nghe tên mặc định có sẵn:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
này sẽ làm việc như chúng tôi khám phá xác định Mặc định của chúng tôi:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<remove name="Default" />
<add name="Default" type="System.Diagnostics.DefaultTraceListener" />
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
Công việc WONT này:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<remove name="Default" />
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
Nếu bạn không có phần chẩn đoán trong web.config của bạn thì có thể xóa hoặc xóa phần mặc định bởi một số tiện ích mở rộng VS vv, vì vậy việc thêm phần này sẽ mang lại hành vi mong đợi.
Bạn đã kiểm tra kỹ xem bạn có đang chạy phiên bản phát hành không? – ChrisF
Làm thế nào về mở dll của bạn/exe với Reflector và xem liệu khẳng định là thực sự trong mã? Và lắp ráp của bạn có thực sự được nạp từ vị trí bạn nghĩ không? Có thể kiểm tra thời gian khác mà bạn đang sử dụng phiên bản gỡ lỗi. –
@ Chris: Như tôi đã nói, vâng. Ba lần ... :-) –