2009-05-07 11 views
7

Con proyectos pequeños, puedo cambiar a la vista de diseño casi al instante (< 1 seg).¿Qué podría estar causando que la vista de diseño sea tan lenta?

Tengo un proyecto grande que toma aproximadamente 60 segundos abrir un control o formulario en la vista de diseño, por primera vez solamente. Después de este retraso de 60 segundos, puedo abrir cualquier control en el proyecto en vista de diseño casi instantáneamente, hasta que recompilo el proyecto.

Si se hace referencia al archivo ejecutable generado por este proyecto en otro proyecto (pequeño), el proyecto pequeño instantáneamente se vuelve tan lento como el proyecto grande. De forma similar, si agrego todos los archivos del proyecto grande al proyecto pequeño individualmente, el proyecto pequeño se vuelve tan lento.

El proyecto grande hace referencia a un gran proyecto de C++ administrado, pero si agrego la misma referencia (y llamo una función desde la referencia para asegurarme de que esté cargada) al proyecto pequeño, el proyecto pequeño sigue siendo rápido.

Mi gran proyecto utiliza SandDock. Si mi pequeño proyecto usa SandDock, todavía es rápido.

Mi proyecto grande tiene alrededor de 60 controles de usuario que aparecen en la caja de herramientas. Si agrego 60 controles de usuario al proyecto pequeño, el proyecto pequeño sigue siendo rápido.

Si hago los controles de usuario ocultos desde la caja de herramientas con [System.ComponentModel.ToolboxItem (false)], el proyecto grande sigue siendo lento.

El problema ocurre tanto en vs2005 como en vs2008.

¿Qué podría hacer que el gran proyecto sea tan lento para abrir la vista de diseño por primera vez? Alguna otra referencia? La gran cantidad de controles? La gran cantidad de clases? Alguna otra causa?

Una cosa que he notado (aunque posiblemente sea una pista falsa) es que la carpeta ProjectAssemblies (C: \ Documents and Settings \ tim.gradwell \ Configuración local \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies) es enorme (> 1GB) y la mayoría de las carpetas aquí tienen una copia de mi dll Managed C++. Parece que estas carpetas se vuelven a crear cada vez que se vuelve a abrir la vista de diseño (después de una recompilación). ¿Podría esto tener algo que ver con la desaceleración?


más información:

A toolstrip en el control de usuario o forma hace que la forma Toma 60 segundos para cargar. La eliminación de la tira de herramientas (pero todavía tiene varios controles diferentes en el formulario) hace que el cambio a la vista de diseño sea instantáneo.

No es toda la historia ... Una tira de herramientas en un nuevo proyecto no causa una desaceleración masiva, por lo que debe haber algo en mi gran proyecto que afecte a las tiras de herramientas. Además, algunos otros formularios/controles que no tienen tooltrips en ellos todavía demoran 60 segundos para mostrar la vista de diseño, por lo tanto, lo que sea que afecte a las tiras de herramientas también está afectando a otros controles. Seguiré tratando de precisar qué controles e incluso qué es lo que está causando eso.

+0

Solo por claridad: el proyecto grande que causa la desaceleración está en C#, ¿correcto? – overslacked

+0

El proyecto está escrito en C# ... también hace referencia a un proyecto administrado de C++, pero no he tenido tiempo de intentar aislar el proyecto C++ administrado para ver si eso marcaba la diferencia ... –

Respuesta

0

La misma cosa similar sucede con mi 2005 en sirvieron para que el devenv.exe cuelga aleatoriamente

e incluso después de la "construcción" a veces los controles personalizados tienden a corromper la principal forma

Tiene recientemente virus escaneado y desfragmentado?

+0

Ocurre en un nuevo producto máquina (como en la instalación reciente de Windows). En una máquina más antigua, demora varios minutos abrir la vista de diseño. –

7

Aunque haya marcado las clases para que no aparezcan en la Caja de herramientas, Visual Studio aún necesita escanear todos sus proyectos abiertos para descubrir eso. Para acelerar las cosas, debe desactivar la configuración para llenar automáticamente la Caja de herramientas. Puede ser un poco molesto si trabajas mucho con la caja de herramientas, pero acelera mucho las cosas.

La configuración está en Herramientas -> Opciones -> Windows Forms Designer, configure "AutoToolboxPopulate" en falso.

+0

Gracias por la sugerencia, pero aún sucede, incluso si AutoToolboxPopulate está configurado en falso :( –

+0

Incluso después de reiniciar y limpiar, etc.? Eso es molesto. Tuvimos la misma situación, y esa configuración solucionó todo muy bien. Buena suerte ! –

2

La primera respuesta: "La configuración está en Herramientas -> Opciones -> Windows Forms Designer, configure" AutoToolboxPopulate "en falso" funcionó para mí. El diseñador solía colgar durante al menos un minuto cuando intentaba enfocarse en un control de un formulario cuando miraba por primera vez un formulario en la vista de diseño. Ahora, solo lleva unos segundos. (No tenía suficientes puntos de reputación para comentar directamente sobre esa respuesta)

0

Tuve este problema en un proyecto Win CE 6.0 en Visual Studio 2005. El proyecto utiliza System.Data.SQLite.dll v1.0.65.0 . Cada vez que abría o recompilaba el proyecto y luego intentaba abrir un formulario con una cuadrícula para el diseño, había al menos un retraso de 12 minutos. Resulta que estaba generando 770 carpetas en "Mis documentos \ Configuración local \ Datos de aplicación \ Microsoft \ Visual Studio \ 8.0 \ Project Assemblies", la mayoría de los cuales tenía una copia del dll de SQLite.
El problema parece ser que he hecho referencia a esta DLL en el proyecto desde una carpeta de "hermanos" a mi proyecto. A modo de ejemplo:
carpeta Proyecto: "... Proyectos \ thisandthat \ projectFolder"
carpeta DLL: "... Proyectos \ thisandthat \ projectFolderBin"
Puede haber otras relaciones de carpetas que se manifiestan este problema, pero lo hice no investigar
Moví la DLL a la carpeta "Archivos de programa \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE" y el problema desapareció. Tengo un formulario con un control de pestañas que contiene dos pestañas. Cada pestaña contiene un control de cuadrícula de datos. Esta forma ahora se carga casi instantáneamente en el diseñador.
Si alguien sabe de una solución mejor, o qué configuración o comportamiento de VS2005 causa este problema, por favor agregue un comentario.

Cuestiones relacionadas