С небольшими проектами я могу почти мгновенно переключиться в режим дизайна (‹ 1 секунды).
У меня есть большой проект, который занимает около 60 секунд, чтобы открыть элемент управления или форму в режиме конструктора — только в первый раз. После этой 60-секундной задержки я могу почти мгновенно открыть любой элемент управления в проекте в режиме конструктора — пока не перекомпилирую проект.
Если на исполняемый файл, созданный этим проектом, ссылаются в другом (небольшом) проекте, маленький проект мгновенно становится таким же медленным, как и большой проект. Точно так же, если я добавлю все файлы из большого проекта в маленький проект по отдельности, маленький проект станет таким же вялым.
Большой проект ссылается на большой управляемый проект C++, но если я добавлю ту же ссылку (и вызову функцию из ссылки, чтобы убедиться, что она загружена) в небольшой проект, маленький проект все равно будет работать быстро.
В моем большом проекте используется SandDock. Если мой небольшой проект использует SandDock, он все равно будет быстрым.
В моем большом проекте около 60 пользовательских элементов управления, которые отображаются на панели инструментов. Если я добавлю 60 пользовательских элементов управления в небольшой проект, он все равно будет быстрым.
Если я скрою пользовательские элементы управления из панели инструментов с помощью [System.ComponentModel.ToolboxItem(false)], большой проект все равно будет медленным.
Проблема возникает как в vs2005, так и в vs2008.
Что может быть причиной того, что большой проект так медленно открывается в режиме конструктора в первый раз? Какая-то другая ссылка? Большое количество элементов управления? Большое количество классов? Какая-то другая причина?
Одна вещь, которую я заметил (хотя, возможно, отвлекающий маневр), заключается в том, что папка ProjectAssemblies (C:\Documents and Settings\tim.gradwell\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies) огромна (> 1 ГБ) и в большинстве папок здесь есть копия моей DLL-библиотеки Managed C++! Эти папки создаются заново каждый раз при повторном открытии представления дизайна (после повторной компиляции). Может ли это быть связано с замедлением?
Дополнительная информация:
Панель инструментов в пользовательском элементе управления или форме заставляет форму загружаться 60 секунд. Удаление панели инструментов (но сохранение нескольких других элементов управления в форме) делает переключение в режим конструктора мгновенным.
Однако это еще не все... Панель инструментов в совершенно новом проекте не вызывает серьезного замедления, поэтому в моем большом проекте должно быть что-то, что влияет на панели инструментов. Кроме того, некоторым другим формам/элементам управления, на которых нет полос инструментов, по-прежнему требуется 60 секунд для отображения представления дизайна, поэтому все, что влияет на панели инструментов, также влияет и на другие элементы управления. Я буду продолжать пытаться точно определить, какие элементы управления и, возможно, даже то, что вызывает это!