Что может быть причиной медленного представления дизайна? - PullRequest
8 голосов
/ 07 мая 2009

В небольших проектах я могу переключиться в режим конструктора почти мгновенно (<1 сек). </p>

У меня есть большой проект, который требует около 60 секунд, чтобы открыть элемент управления или форму в режиме конструктора - только в первый раз. После этой 60-секундной задержки я могу почти мгновенно открыть любой элемент управления в проекте в режиме конструктора - пока я не перекомпилирую проект.

Если на исполняемый файл, созданный этим проектом, ссылаются в другом (маленьком) проекте, маленький проект мгновенно становится таким же медленным, как и большой проект. Точно так же, если я добавлю все файлы из большого проекта в маленький проект по отдельности, маленький проект станет таким же медленным.

Большой проект ссылается на большой проект Managed C ++, но если я добавлю ту же ссылку (и вызову функцию из ссылки, чтобы убедиться, что она загружена) для небольшого проекта, маленький проект все равно будет работать быстро.

Мой большой проект использует SandDock. Если мой небольшой проект использует SandDock, он все еще быстрый.

Мой большой проект имеет около 60 пользовательских элементов управления, которые отображаются на панели инструментов. Если я добавлю 60 пользовательских элементов управления в маленький проект, маленький проект все еще будет быстрым.

Если я сделаю пользовательские элементы управления скрытыми из панели инструментов с помощью [System.ComponentModel.ToolboxItem (false)], большой проект все еще будет работать медленно.

Проблема возникает как в 2005, так и в 2008 году.

Что может сделать большой проект настолько медленным, чтобы впервые открыть представление дизайна? Какая-то другая ссылка? Большое количество элементов управления? Большое количество классов? Другая причина?

Я заметил одну вещь (хотя, возможно, и красную сельдь), что папка ProjectAssemblies (C: \ Documents and Settings \ tim.gradwell \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies) огромна ( > 1 ГБ) и большинство папок здесь имеют копию моей управляемой C ++ DLL! Эти папки создаются заново при каждом повторном открытии представления проекта (после перекомпиляции). Может ли это быть как-то связано с замедлением?


Дополнительная информация:

Полоса инструментов в пользовательском элементе управления или форме заставляет форму загружаться за 60 секунд. Удаление панели инструментов (но при этом в форме по-прежнему есть несколько других элементов управления) мгновенно переключается в режим конструктора.

Хотя это еще не вся история ... Набор инструментов в новом проекте не вызывает значительного замедления - поэтому в моем большом проекте должно быть что-то, что влияет на набор инструментов. Кроме того, некоторым другим формам / элементам управления, на которых нет надписей инструментов, все еще требуется 60 секунд, чтобы отобразить представление конструктора, поэтому все, что влияет на полосы инструментов, также влияет на другие элементы управления. Я буду продолжать пытаться точно определить, какие элементы управления и, возможно, даже то, что его вызывает!

Ответы [ 4 ]

9 голосов
/ 07 мая 2009

Даже если вы отметили классы, чтобы они не отображались на панели инструментов, Visual Studio по-прежнему необходимо сканировать все открытые проекты, чтобы обнаружить это. Чтобы ускорить процесс, вам нужно отключить настройку для автоматического заполнения панели инструментов. Это может немного раздражать, если вы много работаете с набором инструментов, но это сильно ускорит процесс.

Параметр «Инструменты» -> «Параметры» -> «Конструктор Windows Forms», для параметра «AutoToolboxPopulate» задано значение «ложь».

3 голосов
/ 21 мая 2009

Первый ответ: «Настройка находится в Сервис -> Параметры -> Конструктор Windows Forms, установите« AutoToolboxPopulate »на false», сработал для меня. При попытке сфокусироваться на элементе управления в форме дизайнер сначала зависал не менее минуты, когда впервые просматривал форму в режиме конструктора. Теперь это занимает всего несколько секунд. (У меня не было достаточно очков репутации, чтобы напрямую комментировать этот ответ)

0 голосов
/ 14 мая 2014

У меня была эта проблема в проекте Win CE 6.0 в Visual Studio 2005. В проекте используется System.Data.SQLite.dll v1.0.65.0. Каждый раз, когда я открывал или перекомпилировал проект, а затем пытался открыть форму с сеткой для дизайна, будет как минимум 12-минутная задержка. Оказывается, он генерировал 770 с лишним папок в папке «Мои документы \ Локальные настройки \ Данные приложения \ Microsoft \ Visual Studio \ 8.0 \ Project Assemblies», большинство из которых имели копию только библиотеки SQLite.
Кажется, проблема в том, что я ссылался на эту DLL в проекте из папки «sibling» в моем проекте. Как пример:
Папка проекта: "... Projects \ ThisAndThat \ projectFolder"
Папка DLL: "... Projects \ ThisAndThat \ projectFolderBin"
Могут быть другие отношения с папками, которые проявляют эту проблему, но я не исследовал.
Я переместил библиотеку DLL в папку «Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE», и проблема исчезла. У меня есть форма с контролем вкладок, содержащая две вкладки. Каждая вкладка содержит элемент управления сеткой данных. Теперь эта форма загружается в конструктор практически мгновенно.
Если кто-то знает о лучшем решении или о том, какие настройки или поведение VS2005 вызывают эту проблему, добавьте комментарий.

0 голосов
/ 07 мая 2009

То же самое происходит с моим 2005 в дополнении к тому, что devenv.exe зависает случайно

и даже после "сборки" иногда пользовательские элементы управления имеют тенденцию портить основную форму

Вы недавно проверяли и дефрагментировали вирус?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...