2009-05-07 30 views
7

Với các dự án nhỏ, tôi có thể chuyển sang chế độ xem thiết kế gần như ngay lập tức (< 1 giây).Điều gì có thể khiến màn hình thiết kế quá chậm?

Tôi có một dự án lớn mất khoảng 60 giây để mở điều khiển hoặc biểu mẫu ở chế độ xem thiết kế - chỉ lần đầu tiên. Sau sự chậm trễ 60 giây này, tôi có thể mở bất kỳ sự kiểm soát nào trong dự án trong khung nhìn thiết kế gần như ngay lập tức - cho đến khi tôi biên dịch lại dự án.

Nếu exe được xây dựng bởi dự án này được tham chiếu trong dự án (nhỏ) khác, dự án nhỏ ngay lập tức trở nên chậm chạp như dự án lớn. Tương tự, nếu tôi thêm tất cả các tệp từ dự án lớn vào dự án nhỏ riêng lẻ, dự án nhỏ sẽ trở nên chậm chạp.

Dự án lớn tham chiếu một dự án Managed C++ lớn, nhưng nếu tôi thêm cùng một tham chiếu (và gọi hàm từ tham chiếu để đảm bảo nó được tải) cho dự án nhỏ, dự án nhỏ vẫn còn nhanh.

Dự án lớn của tôi sử dụng SandDock. Nếu dự án nhỏ của tôi sử dụng SandDock, nó vẫn nhanh.

Dự án lớn của tôi có khoảng 60 điều khiển người dùng xuất hiện trong hộp công cụ. Nếu tôi thêm 60 điều khiển người dùng vào dự án nhỏ, dự án nhỏ vẫn còn nhanh.

Nếu tôi điều khiển người dùng ẩn khỏi hộp công cụ với [System.ComponentModel.ToolboxItem (false)], dự án lớn vẫn còn chậm.

Sự cố xảy ra ở cả hai phiên bản vs2005 và vs2008.

Điều gì có thể làm cho dự án lớn quá chậm để mở chế độ xem thiết kế lần đầu tiên? Một số tài liệu tham khảo khác? Số lượng lớn các điều khiển? Số lượng lớn các lớp học? Một số nguyên nhân khác?

Một điều tôi đã nhận thấy (mặc dù có thể là cá trích đỏ) là thư mục ProjectAssemblies (C: \ Documents and Settings \ tim.gradwell \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies) là rất lớn (> 1GB) và hầu hết các thư mục ở đây có một bản sao của dll Managed C++ của tôi! Các thư mục này xuất hiện để được tái tạo mỗi khi khung nhìn thiết kế được mở lại (sau khi biên dịch lại). Điều này có liên quan gì đến sự chậm lại không?


Tiếp tục Thông tin:

Một toolstrip trong việc kiểm soát người dùng hoặc hình thức làm cho các hình thức mất 60 giây để tải. Loại bỏ các toolstrip (nhưng vẫn có một số điều khiển khác nhau khác trên form) làm cho switch chuyển sang thiết kế xem ngay lập tức.

Đó không phải là toàn bộ câu chuyện ... Một toolstrip trong một dự án hoàn toàn mới không gây ra sự sụt giảm lớn - vì vậy phải có một cái gì đó trong dự án lớn của tôi đang ảnh hưởng đến các công cụ. Ngoài ra, một số biểu mẫu/điều khiển khác không có toolstrips trên chúng vẫn mất 60 giây để hiển thị khung nhìn thiết kế, vì vậy bất cứ điều gì ảnh hưởng đến toolstrips cũng ảnh hưởng đến các điều khiển khác. Tôi sẽ tiếp tục cố gắng hạ gục chính xác sự kiểm soát nào và thậm chí có thể điều gì đang gây ra nó!

+0

Chỉ để rõ ràng - dự án lớn gây ra sự chậm lại trong C#, đúng không? – overslacked

+0

Dự án được viết bằng C# ... nó cũng tham chiếu đến một dự án C++ được quản lý, nhưng tôi không có thời gian để thử cô lập dự án C++ được quản lý để xem điều đó có tạo ra sự khác biệt hay không ... –

Trả lời

0

Điều tương tự cũng đang xảy ra với năm 2005 của tôi trong additon vào đó là devenv.exe treo một cách ngẫu nhiên

và ngay cả sau khi "xây dựng" đôi khi các điều khiển tùy chỉnh có xu hướng tham nhũng hình thức chính

có bạn gần đây virus được quét và chống phân mảnh?

+0

Nó xảy ra trên một thương hiệu mới máy (như trong cài đặt mới của cửa sổ). Trên một máy cũ, phải mất vài phút để mở khung nhìn thiết kế. –

7

Mặc dù bạn đã đánh dấu các lớp để không xuất hiện trong hộp công cụ, Visual Studio vẫn cần phải quét tất cả các dự án đang mở của bạn để khám phá điều đó. Để tăng tốc mọi thứ, bạn cần phải tắt cài đặt để tự động điền vào Hộp công cụ. Nó có thể gây phiền nhiễu một chút nếu bạn làm rất nhiều việc với hộp công cụ, nhưng nó sẽ tăng tốc độ nhiều thứ.

Cài đặt trong Công cụ -> Tùy chọn -> Trình thiết kế biểu mẫu Windows, đặt "AutoToolboxPopulate" thành false.

+0

Cảm ơn gợi ý - nhưng nó vẫn xảy ra, ngay cả khi AutoToolboxPopulate được đặt thành false: ( –

+0

Ngay cả sau khi khởi động lại và làm sạch, vv? Thats gây phiền nhiễu. Chúng tôi đã có tình hình chính xác tương tự, và cài đặt cố định tất cả mọi thứ lên. ! –

2

Câu trả lời đầu tiên: "Cài đặt trong Công cụ -> Tùy chọn -> Trình thiết kế biểu mẫu Windows, đặt" AutoToolboxPopulate "thành false" đã hoạt động đối với tôi. Nhà thiết kế đã sử dụng để treo trong ít nhất một phút khi cố gắng tập trung vào một điều khiển trên một biểu mẫu khi lần đầu tiên nhìn vào một biểu mẫu trong dạng xem thiết kế. Bây giờ, nó chỉ mất vài giây. (Tôi không có đủ điểm danh tiếng để nhận xét trực tiếp về câu trả lời đó)

0

Tôi gặp sự cố này trong dự án Win CE 6.0 trong Visual Studio 2005. Dự án sử dụng System.Data.SQLite.dll v1.0.65.0 . Mỗi lần tôi mở hoặc biên dịch lại dự án, và sau đó cố gắng mở một biểu mẫu với một lưới cho thiết kế, sẽ có ít nhất một sự chậm trễ 12 phút. Hóa ra nó đã tạo ra các thư mục 770 lẻ trong "My Documents \ Local Settings \ Application Data \ Microsoft \ Visual Studio \ 8.0 \ Project Assemblies", hầu hết trong số đó có một bản sao của chỉ là dll SQLite.
Sự cố có vẻ là tôi đã tham chiếu DLL này trong dự án từ thư mục "anh chị em" đến dự án của tôi. Ví dụ:
Thư mục dự án: "... Dự án \ ThisAndThat \ projectFolder"
Thư mục DLL: "... Projects \ ThisAndThat \ projectFolderBin"
Có thể có các mối quan hệ thư mục khác thể hiện vấn đề này, nhưng tôi đã làm không điều tra.
Tôi đã chuyển tệp DLL vào thư mục "Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE" và sự cố đã biến mất. Tôi có một biểu mẫu với một điều khiển tab có chứa hai tab. Mỗi tab chứa một điều khiển datagrid. Biểu mẫu này hiện tải gần như ngay lập tức trong nhà thiết kế.
Nếu có ai biết giải pháp tốt hơn, hoặc cài đặt hoặc hành vi nào của VS2005 gây ra sự cố này, vui lòng thêm nhận xét.

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