2009-07-08 22 views
17

Tôi đã sử dụng công cụ xsd.exe để tạo một lớp dựa trên lược đồ xml của tôi. Nó tạo ra một lớp công khai một phần với DebuggerStepThroughAttribute. Vâng, tôi đã tạo một tệp lớp học khác cho lớp này để viết mã tùy chỉnh của tôi và muốn có thể bước vào mã này mà tôi đã viết nhưng có vẻ trình gỡ rối đang áp dụng thuộc tính bước qua cho lớp một phần của tôi là tốt. Có cách nào dễ dàng cho tôi để bước vào mã của tôi mà không cần loại bỏ các thuộc tính mỗi lần tôi tạo lại một phần lớp?Ngăn không cho DebuggerStepThroughAttribute áp dụng cho lớp không phải do tôi tạo ra xsd?

Trả lời

11
  1. Bạn có thể làm cho trình gỡ lỗi bỏ qua thuộc tính này trong Tools-> Options-> Debugger-> General. Bỏ chọn "Chỉ kích hoạt mã của tôi (Chỉ quản lý)".
  2. Bạn cũng có thể chỉ sử dụng lớp từng phần làm trình bao bọc cho một lớp/phương pháp khác. Các phương thức trong lớp một phần sẽ chỉ là các nhánh để gọi các phương thức thực tế trong lớp mới. Trình gỡ lỗi sẽ bỏ qua phương thức được trang trí với thuộc tính nhưng vẫn cho phép bạn bước qua lớp mà chúng bao bọc. Ví dụ dưới đây ...

//

[DebuggerStepThrough] 
static void DebuggerStepThroughInPartialClass() 
{ 
    WrappedClass.NonDebuggerStepThrough(); 
} 

class WrappedClass{ 
    static void NonDebuggerStepThroughInNewClass() 
    { 
     int bar = 0; 
     bar++; 
    } 
} 
+0

Tôi đã hy vọng cho một số thuộc tính tôi có thể đưa vào lớp học một phần MY mà sẽ cho phép tôi bước vào nó, nhưng tôi đoán đó không phải là một lựa chọn. Có lẽ tôi sẽ chỉ xóa thuộc tính khỏi lớp đã tạo theo cách thủ công mỗi lần tôi cần tạo thuộc tính, điều này có thể sẽ không quá thường xuyên. Cảm ơn vì đã phản hồi! – Lyndal

+0

Khi bạn tắt tính năng 'Chỉ kích hoạt mã của tôi', bạn sẽ thấy điểm ngắt ngay lập tức chuyển sang vòng tròn maroon vững chắc cho biết bây giờ nó có thể được sửa lỗi –

0

Cách tốt nhất là chỉ cần loại bỏ các dòng thuộc tính từ mã được tạo. Cách dễ nhất IMHO đang sử dụng bí danh trên cửa sổ lệnh.

dụ:

1) Mở cửa sổ lệnh (CTRL + A)

2) gõ: (VB phiên bản)

alias removenodebug Edit.Replace "(?([^\r\n])\s)*System.Diagnostics.DebuggerStepThroughAttribute\(\),\s*_\r\n(?([^\r\n])\s)*" "" /d /regex /all 

3) bây giờ bạn có một bí danh để tìm & thay thế các dòng đó trên tài liệu hiện tại. Bạn chỉ cần nhập vào cửa sổ lệnh:

removenodebug 

Và các dòng thuộc tính đã biến mất.

Lưu ý: Cụm từ thông dụng được sử dụng trong ví dụ này là dành cho mã VB, nhưng không quá khó để chuyển đổi cho C#.

Các vấn đề liên quan