10

Tôi đã gỡ lỗi trong Visual Studio 2010, mà chúng tôi vừa cài đặt và cố gắng xem từ điển trong cửa sổ xem nhanh. Tôi thấy Keys và Values, nhưng khoan vào những chương trình Count và Non-Public members, các thành viên ngoài công lập tiếp tục đường mòn và tôi không bao giờ thấy các giá trị trong từ điển. Tôi có thể chạy test.Take (10) và xem các giá trị, nhưng tại sao tôi phải làm điều đó. Tôi không có VS 2008 được cài đặt nữa để so sánh, nhưng có vẻ như tôi có thể gỡ lỗi một từ điển dễ dàng hơn nhiều. Tại sao nó theo cách này bây giờ? Nó chỉ là một thiết lập tôi đặt bằng cách nào đó trên máy tính của tôi?Tại sao trình gỡ lỗi gỡ lỗi từ điển ít hữu dụng hơn trong Visual Studio 2010 để gỡ lỗi Silverlight?

mã kiểm tra:

Dictionary<string, string> test = new Dictionary<string, string>(); 
    test.Add("a", "b"); 

EDIT: Tôi vừa cố gắng gỡ lỗi tương tự trong một ứng dụng Console và nó hoạt động như mong đợi. Dự án khác là một ứng dụng Silverlight 4, tại sao chúng khác nhau?

Console Debug Screen Shot

Silverlight 4 Debug Screen Shot:

EDIT: Trả lời từ Microsoft Connect: "Đây là một thiếu sót về phần chúng ta - trước đây chúng tôi đã cố định vấn đề này chính xác cho Visual Studio 2008 SP1, nhưng sửa chữa này là không may không được chuyển sang codebase của Visual Studio 2010. Điều này hiện đã được sửa lại (lần này là tốt!) và chúng tôi đang xem xét việc sửa lỗi này trong VS2010 SP1

Alex Turner Trình quản lý chương trình Visual Basic và C# Compiler "Vì vậy, nó sẽ được sửa chữa sớm.

CHỈNH SỬA: Tôi vừa kiểm tra kỹ điều này trong SP1 và hoạt động chính xác.

+2

Tôi đã chấp nhận câu trả lời Hans passant và đệ trình một báo cáo lỗi cho Microsoft. Chúng ta sẽ thấy điều gì xảy ra: http://connect.microsoft.com/VisualStudio/feedback/details/557741/silverlight-4-dictionary-gỡ lỗi. – Aligned

+0

Yup, tôi gặp vấn đề tương tự và nó bị thổi. Microsoft xác nhận lỗi của nó trong VS 2010 (* chứ không phải * beta) và có thể sửa lỗi trong SP1. –

Trả lời

0

Trình hiển thị trình gỡ lỗi cho Từ điển là cùng một lớp học chính xác với cùng một hành vi. Nó vẫn là lớp Mscorlib_DictionaryDebugView riêng. Unexpanded nó cho thấy Count, mở rộng nó cho thấy một mảng của các yếu tố.

Đoạn mã của bạn cho thấy rằng bạn đang sử dụng một lớp Từ điển hoàn toàn khác, một lớp không phải là chung chung.

+0

Tôi vừa chỉnh sửa câu hỏi của mình ... Tôi đã định dạng không chính xác, đã ẩn generic của định nghĩa. – Aligned

+0

Phải, điều đó sẽ làm được. Đoạn mã của bạn có thực sự lặp lại vấn đề không? –

+0

Vui lòng xem chỉnh sửa được cập nhật của tôi, có vẻ như nó khác với ứng dụng Silverlight so với ứng dụng Bảng điều khiển. – Aligned

4

Có một cách giải quyết để loại bỏ nội dung của từ điển trong trình gỡ rối.

  1. Để dự án của bạn, thêm một tham chiếu đến các dll LINQ (ví dụ System.Core)

  2. Thêm các báo cáo sau vào file nguồn của bạn:

    sử dụng System.Linq;

  3. Trong cửa sổ xem, loại:

    test.Take (1)

  4. Sau đó mở rộng "Xem Kết Quả" hàng nhóm. Điều này sẽ cung cấp cho bạn danh sách các cặp khóa, giá trị quen thuộc.

[workaround này đã được báo cáo bởi rickpastoor trên connect.microsoft.com cho Bug 557.741]

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