Visual Studio crea proyectos cada vez que los ejecuto

Visual Studio crea proyectos cada vez que los ejecuto

La causa podría ser muchas cosas, por lo que sin tener su solución + proyectos, solo podemos adivinar.

La forma típica en que manejo este problema es reduciéndolo con una búsqueda binaria. Es decir,

  1. Construyo todo.
  2. A continuación, encuentro algo en medio del orden de construcción y construyo ese proyecto. Si algo de lo que depende ese proyecto es el culpable, experimentará el problema. Si algo de lo que no depende tiene el problema, no lo hará (es decir, dirá que se omitieron todos los proyectos).
  3. Ahora repite este proceso hasta que lo reduzcas a (con suerte) el proyecto que ha comenzado a causar el problema.

Esto (por supuesto) solo funciona si hay un solo proyecto que introdujo el nuevo problema (lo cual es probable).

Uno de los culpables en mi situación específica fue que un proyecto x64 hiciera referencia a un proyecto x86 que no se seleccionó para construirse en la configuración x64.


Compartiré la mejor respuesta que encontré aquí en stackoverflow y combinada con la respuesta aceptada de Matt Smith aquí, llegué a la raíz de mi problema:

Al configurar Visual Studio para registrar el resultado de la compilación en forma de "Diagnóstico", como se explica en esta respuesta:https://stackoverflow.com/a/29649259/2740778, la primera línea del resultado explica por qué MSBuild determina reconstruir un proyecto.

Entonces, si tiene, digamos 3 proyectos en una solución:

  • Biblioteca0
  • Biblioteca1
  • Solicitud

referenciado de esta manera:la aplicación hace referencia a la Biblioteca1 y esta hace referencia a la Biblioteca0. Al seleccionar "Generar" para el proyecto de la aplicación, la primera vez debe compilar todos los proyectos a los que se hace referencia en orden. Pero a partir de ahora, si no se realizaron cambios, al presionar "Build" no se debe generar nada, ya que MSBuild detecta que no se realizaron cambios. Debería mostrarse una salida de registro similar:

==========Compilación:0 correcta, 0 fallida, 3 actualizada, 0 omitida ==========

Pero ahora, si se realizaron cambios, si tiene el nivel de salida de registro de MSBuild en "Diagnóstico", la primera línea en la ventana de salida se mostrará el motivo por el cual Visual Studio decide compilar un proyecto, como aquí:

El proyecto 'Library0' no está actualizado. El archivo de entrada 'c:\Library0\Class1.cs' se modifica después del archivo de salida 'c:\Library0\bin\Debug\Library0.pdb'.


Vaya a Herramientas -> Opciones -> Proyecto y Soluciones -> Generar y Ejecutar. Mire las opciones allí. Se debe marcar 'Solo compilar proyectos de inicio y dependencias en Ejecutar'.

Además, puede establecer la salida de compilación (en la misma pantalla de opciones) en Detallado o Diagnóstico para ver si puede encontrar alguna pista de por qué los proyectos se compilan cada vez.