visual-studio-2008 - usar - seleccione un elemento de inicio valido visual studio
¿La cantidad de proyectos en una solución de Visual Studio 9 afecta la carga de la solución y los tiempos de construcción? (10)
(Estoy específicamente interesado en los tiempos de carga y tiempo de construcción de la solución: ¿hay menos soluciones que signifiquen un mejor rendimiento?)
Aquí hay un tema relacionado por Patrick Smacchia que describe los beneficios de tener un número pequeño de ensamblajes (a partir de entonces, un número pequeño de proyectos). Habla exactamente sobre cómo la cantidad de ensamblajes puede afectar el tiempo de construcción y otros factores.
Te animo a leer el blog de Patrick. Él tiene muchos artículos sobre la componente de código.
Consejos sobre el código de particionamiento a través de ensamblados .NET
Lecciones aprendidas de la base de código NUnit
Sugerencias sobre cómo componer el código existente.
Desde mi experiencia personal, es un dolor tener una solución con algunas docenas de proyectos. IMO que tiene más de 10 proyectos dará lugar a problemas de mantenimiento notables y afectará su productividad.
Estoy especialmente interesado en los tiempos de carga y tiempo de construcción de la solución: ¿hay menos soluciones que signifiquen un mejor rendimiento?
Tenga en cuenta que no me refiero al rendimiento de la aplicación creada.
¿Los tiempos de carga y los tiempos de construcción son más eficientes cuando se trabaja con un número menor de proyectos?
Como guía, tenemos 50-60 proyectos en nuestra solución de Visual Studio.
50-60 me parece mucho. Encuentro que con muchos proyectos, abrir Visual Studio puede llevar mucho tiempo. El tiempo de compilación puede ser malo si cambias un proyecto del que dependen muchos otros proyectos, pero no sé qué tan diferente es entre 10 proyectos con 20 clases en cada uno y 100 proyectos con 2 proyectos en cada uno. (En otras palabras, no estoy seguro de la sobrecarga por proyecto en la construcción.) Incluso cuando no cambia nada, presumiblemente cada proyecto tiene que detectar si necesita reconstruir algo, no me lo puedo imaginar. gratis, pero es difícil dar algo más definido sin intentarlo con tu propio código.
He estado en varias compañías que tienen un montón de proyectos, cada uno con solo unas pocas clases, clases que fácilmente podrían fusionarse en un solo proyecto. Eso tiene beneficios de mantenimiento / capacidad de administración también, en mi experiencia. (No lo haga de cualquier manera, por supuesto, solo sea sensato).
Si realmente tiene proyectos de tamaño razonable, solo muchos de ellos, considere dividir la solución si es posible. Si se trata de proyectos pequeños, considere combinar algunos de ellos. Si no te encuentras esperando a Visual Studio de todos modos (abrir / construir), entonces no te preocupes demasiado.
En mi opinión, es solo una cuestión de organización personal y orden. Si desea tener muchos proyectos que están conectados de alguna manera bajo la misma solución, puede hacerlo. Creo que solo debes considerar si realmente los necesitas a todos. No existe una cantidad mágica máxima de proyectos por solución
Es una mala idea tener demasiados proyectos dentro de su solución. Afecta el tiempo de compilación. Vea este artículo que compara los tiempos de construcción con varias herramientas de compilación. Según el artículo, Visual Studio tarda 2 segundos por proyecto, incluso si el proyecto no es parte de la construcción.
Esto también coincide con mi experiencia, que Visual Studio es una de las herramientas de compilación más lentas disponibles. Entre Visual Studio 6 y 2006, mi tiempo de construcción se ha movido de un minuto a 5 minutos para un proyecto C relativamente simple.
Los problemas que veo cuando creas muchos proyectos pequeños son:
1 / Encapsulación : una clase, un método o una propiedad que desee compartir entre dos proyectos deben ser públicos y, por lo tanto, visibles desde cualquier lugar. Cuantos más proyectos tengas, más probable es que reveles algunos secretos ...
2 / Número total de ensamblajes : como escribió Aku , menos proyectos duplican menos asambleas. Como cada proyecto copia localmente los ensamblajes que utilizan, puede obtener hasta (n * (n - 1)) / 2 ensamblajes en sus carpetas (49 copias del ensamblaje 1, 48 del ensamblaje 2, ...). ¡Para 50 proyectos, esto es 1176 archivos! => Ok, probablemente tengas mucho menos (¿200?), Pero aún es suficiente para obtener una copia o dos obsoletos aquí y allá ...
Trabajo en un proyecto con una gran cantidad de proyectos, en el ámbito de 50-60, y he descubierto que los tiempos de carga largos son aceptables en comparación con los problemas asociados con la lazyness / forgetfulnes del desarrollador.
Muchos de los proyectos dependen de las bibliotecas base y, por lo tanto, deben reconstruirse cuando se modifica la biblioteca base. Como los proyectos pueden tener cierto flujo en un momento dado, hacer que los desarrolladores solo trabajen en un subconjunto significa que si son flojos no reconstruirán toda la aplicación cuando se reciba una actualización de la herramienta CM. A continuación, pueden pasar una gran cantidad de tiempo tratando de arreglar las cosas dándose cuenta de por qué las cosas se rompen. Todo esto se resuelve si todo el árbol de dependencias es conocido por VS y una compilación rápida: todo puede hacer que todo funcione correctamente.
Me doy cuenta de que un excelente desarrollador sabrá esto y lo hará de manera predeterminada, pero no todos son geniales, y algunas veces hasta los grandes tienen días libres.
La práctica general que trato de mantener es de 4 a 5 proyectos por solución.
- Lógica de negocios
- Capa de comunicaciones (relacionada con el servidor)
- Interfaz de usuario
- Proyecto de prueba para utilizar / probar los otros tres proyectos
Esto generalmente se ajusta a nuestro estilo y cómo podemos implementarlo. Si es necesario, podemos incluir otras cosas también allí, pero esas instancias no son tan comunes como estas cuatro para nosotros.
Y algunas palabras de Microsoft ...
Tarde para la fiesta, pero ninguna de las respuestas menciona configuraciones de compilación. PUEDE tener muchos proyectos en su solución sin que todos se construyan cada vez que se ejecuta. Haga clic en el combo Depurar / Versión y cree una nueva configuración de creación; allí puede decidir qué proyectos quiere construir o no.
¿Por qué hacer esto? Lo hago para poder ''Ir a definición'' a voluntad, y para poder intercambiar rápidamente proyectos dentro y fuera de mi compilación sin pasar por todo el dolor de Añadir proyecto.
Además, tenga en cuenta que si tiene carpetas de solución, puede hacer clic con el botón derecho y compilar en la carpeta, que construirá todos los proyectos en la carpeta.
Depende de tu proyecto, la mayor parte del tiempo trabajo con 10-15. Cuanto menos se haga, menor será el tiempo de construcción.
Los proyectos que normalmente tengo son:
- proyecto base con excepciones y manejo de errores
- lógica de negocios
- capa de acceso a datos - repositorio
- WebForms OR WinForms O WPF UI
Algunos de estos me separarían en otros 3-4 proyectos. También tendría proyectos de prueba NUnit también.